反射的实现原理思考

反射的实现原理思考

问题描述:

学完这节后引发了我如下几个问题:

1、Java在编译阶段,如果发现程序中有import某个类,或者new某个类是不是就会创建.class文件

2、如果运用反射技术在编译阶段是不会产生某个.class类的

3、如果程序第一次运行到反射的语句,是不是就就会动态创建.class类

4、第二次运行到反射的语句,如果之前加载过的类还会被再次创建吗,还是虚拟机会首先寻找内存中有没有这个类有的话直接用,没有的话动态加载

正在回答

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

1回答

同学你好,1、是的,会创建.class文件。我们编写的java文件都是保存着业务逻辑代码。java编译器将 .java 文件编译成扩展名为 .class 的文件。.class 文件中保存着java转换后,虚拟机将要执行的指令。当需要某个类的时候,java虚拟机会加载 .class 文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程被称为类的加载。

    综上所述,在编译阶段不管是反射还是普通类,都会创建.class文件。

2、在反射中是创建class对象,并不是创建.class文件。并如果之前编译过的类是不会重新创建的.class文件的。

祝学习愉快!

  • WittChen 提问者 #1

    第四问,老师还没回答呢

    2021-05-20 14:20:51
  • 好帮手慕小尤 回复 提问者 WittChen #2

    同学你好,老师是有回复的,可能回复的不太明显,同学可以重新查看一下。

        ​如果之前编译过的类,也就是第二次运行到反射的语句是不会重新创建的.class文件的,class文件只会创建一次。

    祝学习愉快!

    2021-05-20 16:32:30
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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