这段代码没看懂,求详细分析

第一个类代码:publicclassSpringDetector{publicstaticvoiddetectSpring(ClassgroundhogClass)thr... 第一个类代码:
public class SpringDetector {
public static void detectSpring(Class groundhogClass) throws Exception{
Constructor ghog = groundhogClass.getConstructor(new Class[]{int.class});
Map map = new HashMap();
for(int i = 0;i < 10;i++){
map.put(ghog.newInstance(new Object[]{new Integer(i)}), new Prediction());
System.out.println("map = " + map);
Groundhog gh = (Groundhog)ghog.newInstance(new Object[]{new Integer(3)});
if(map.containsKey(gh))
System.out.println((Prediction)map.get(gh));
else
System.out.println("c: " + gh);
}
}
public static void main(String[] args) throws Exception {
detectSpring(Groundhog.class);
}
}
第二个类:
public class Groundhog {
protected int number;
public Groundhog(int n){
number = n;
}
public String toString(){
return "A" + number;
}
}
第三个类:
public class Prediction {
private boolean shadow = Math.random() > 0.5;
public String toString(){
if(shadow){
return "a";
}else{
return "b";
}
}
}
主类里面有几个地方不明白,求详细指点:
1、if(map.containsKey(gh))这个判断为什么map里面有A3值的时候输出结果还是c: A3
2、Constructor ghog = groundhogClass.getConstructor(new Class[]{int.class});这句没看懂,尤其是最后面括号中的new Class[]{int.class}
java问题
展开
 我来答
7764sky
2014-07-17 · TA获得超过2616个赞
知道大有可为答主
回答量:1245
采纳率:0%
帮助的人:1404万
展开全部
System.out.println(ghog.newInstance(new Object[]{new Integer(3)}).equals(ghog.newInstance(new Object[]{new Integer(3)})));
运行上面的代码,这两个就不等。
map.containsKey的实质就是上面这样子,
你新new出来的两个实例是不等的,这也引申出了单例模式。
Constructor ghog = groundhogClass.getConstructor(new Class[]{int.class})就是获得Groundhog带int参数的构造器。
追问
谢谢,你的解释我听懂了,只是那个引申出了单例模式还想不通,怎么看出来的呢
追答
ghog.newInstance(new Object[]{new Integer(3)})
这个是用了反射方式创建一个对象,
我们通常用的是这样
A = new A(1)
B = new A(1)
A.equal(B) 他是不等的
你找下单例模式的解释以及作用
如果用了单例模式,那么这两个就相等了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式