if (instance == null) {
synchronized (ConfMgr.class) {
if (instance == null)
instance = new ConfMgr(configFile);
}
}
如上,ConfMgr是这代码的中公开类,在这个类中有如上面这一小点代码,其中有的ConfMgr.class是什么意思的啊 收起
synchronized (ConfMgr.class) {
if (instance == null)
instance = new ConfMgr(configFile);
}
}
如上,ConfMgr是这代码的中公开类,在这个类中有如上面这一小点代码,其中有的ConfMgr.class是什么意思的啊 收起
推荐于2016-07-28 12:31:29
最佳答案
ConfMgr.class是获取ConfMgr的class对象。
下面给你说几种获取class对象的方法:
Class对象的获取
1. 所有的引用数据类型(类-类型)的类名、基本数据类型都可以通过.class方式获取其 Class对象(对于基本数据类型的封装类还可以通过.TYPE 的方式获取其 Class 对象,但要注意。TYPE 实际上获取的封装类对应的基本类型的 Class 对象的引用,那么你可以判断出int.class==Integer.TYPE 返回 true,int.class==Integer.class 返回 false!),通过这种方式不会初始化静态域,使用.class、.TYPE 的方式获取 Class对象叫做类的字面常量;
2. Class 的 forName(String name)传入一个类的完整类路径也可以获得 Class 对象,但由于使用的是字符串,必须强制转换才可以获取泛型的Class<T>的 Class对象,并且你必须获取这个方法可能抛出的ClassNotFoundException异常。这种方法可以初始化静态域。
3. 还可通过类的对象实例下的getClass()方法来获取Class对象,即 实例名.getClass()
其他回答
实际上java的每个类被编译成.class文件的时候,java虚拟机(叫jvm)会自动为这个类生成一个类对象,这个对象保存了这个类的所有信息(成员变量,方法,构造器等),以后这个类要想实例化(也就是创建类的实例或创建类的对象)那么都要以这个class对象为蓝图(或模版)来创建这个类的实例。例如 class<?> c=Class.forName("com.pojo.User"); c就是User的类对象,而 User u=new User();这个u就是以c为模版创建的,其实就相当于u=c.newInstance(); 这个在java的反射里面讲的比较清楚。
wuxinyun0564
发布于2013-06-23 00:46
评论(5)
188
9
![](https://i-blog.csdnimg.cn/blog_migrate/0f9d5f8ad176a8858e371d8a74d7cd96.jpeg)
这么专业精确的答案,为什么还有sb点鄙视手势?
![](https://i-blog.csdnimg.cn/blog_migrate/22a078d2a023158619703605dea57224.jpeg)
这就叫专业
![](https://i-blog.csdnimg.cn/blog_migrate/99c3215e129782bd235a0fe31e6454c1.jpeg)
牛掰,正解
![](https://i-blog.csdnimg.cn/blog_migrate/db60690e3e0abbbe7331a61e94295a67.jpeg)
这才是正解
![](https://i-blog.csdnimg.cn/blog_migrate/7730c73626b2d23c4f7d4a894d8c3a1d.jpeg)
说的很详细