为了账号安全,请及时绑定邮箱和手机立即绑定

关于类名.class是什么意思?有了解的吗?

关于类名.class是什么意思?有了解的吗?

慕仙森 2022-02-09 11:07:06
if (instance == null) {synchronized (ConfMgr.class) {if (instance == null)instance = new ConfMgr(configFile);}}如上,ConfMgr是这代码的中公开类,在这个类中有如上面这一小点代码,其中有的ConfMgr.class是什么意思的啊
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

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()



查看完整回答
反对 回复 2022-02-14
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

java中把生成Class对象和实例对象弄混了,更何况生成Class对象和生成instance都有多种方式。所以只有弄清其中的原理,才可以深入理解。首先要生成Class对象,然后再生成Instance。
Class对象的生成方式如下:
1.Class.forName("类名字符串") (注意:类名字符串必须是全称,包名+类名)
2.类名.class
3.实例对象.getClass()
当我们编写一个新的JAVA类时,JVM就会帮我们编译成class对象,存放在同名的.class文件中。在运行时,当需要生成这个类的对象,JVM就会检查此类是否已经装载内存中。若是没有装载,则把.class文件装入到内存中。若是装载,则根据class文件生成实例对象。


查看完整回答
反对 回复 2022-02-14
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

实际上java的每个类被编译成.class文件的时候,java虚拟机(叫jvm)会自动为这个类生成一个类对象,这个对象保存了这个类的所有信息(成员变量,方法,构造器等),以后这个类要想实例化(也就是创建类的实例或创建类的对象)那么都要以这个class对象为蓝图(或模版)来创建这个类的实例。例如 class<?> c=Class.forName("com.pojo.User"); c就是User的类对象,而 User u=new User();这个u就是以c为模版创建的,其实就相当于u=c.newInstance(); 这个在java的反射里面讲的比较清楚。

查看完整回答
反对 回复 2022-02-14
  • 3 回答
  • 0 关注
  • 237 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信