当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象

当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象

老师,您好!这是我在一个问题下看到的回答,这句话有点不理解,一个类的Class对象是在编译完成生产.class文件之后生成的吗?.class文件不是二进制的吗?那这个Class对象是以什么方式存在?Class.forName()是对编译完成之后的.class文件进行操作吗?就是说是从.class文件中获得Class对象?

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,newInstance实例对象时,是调用类中的无参构造方法完成实例化操作,这个过程中没有用到new。

祝:学习愉快~

好帮手慕阿满 2020-08-15 10:34:14

同学你好,关于同学的问题:

Class对象是编译完成.class文件后产生的。

.class是二进制字节码文件。

Class对象是由java虚拟机,生成.class文件的时候创建的,保存在同名的.class文件中。

Class.forName()是从.class文件中获取Class对象。


Class employeeClass= Class.forName("com.imooc.reflect.entity.Employee");

employeeClass对象是编译Employee类后产生的Class对象。


Class.forName()返回的是Class类的对象,该对象是com.imooc.reflect.entity.Employee类编译后的Class对象,通过该Class对象可以newInstance实例化一个Employee对象。


祝:学习愉快~

  • 提问者 mahsiaoko #1
    谢谢老师,调用newInstance实例化一个对象的原理是怎样的?这个过程会用到new吗
    2020-08-15 11:28:18
mahsiaoko 提问者 2020-08-14 23:56:46

Class.forName返回的是类还是对象,视频中说是Class对象,既然是Class对象,为什么还需要调用newInstance进行实例化?

mahsiaoko 提问者 2020-08-14 23:41:27
Class employeeClass= Class.forName("com.imooc.reflect.entity.Employee");

这里的employeeClass是从编译之后的.class文件获得的吗?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师