Java反射中,关于Class.forName()、打包和发布有点疑问。

Java反射中,关于Class.forName()、打包和发布有点疑问。

1、JDBC中Class.forName()怎么就不要newInstance(),下面就要?

mathOperation = (MathOperation) Class.forName("com.imooc.reflect." + op).newInstance();

2、为什么说“反射不用重新打包、发布”?新加的类是源代码啊,而运行的不是字节码吗,字节码不打包、发布哪里来呢?

正在回答

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

1回答

同学你好

1、Class.forName()与newInstance()方法的作用是不一样的,Class.forName()方法将指定的类加载到jvm,并返回对应Class对象,而newInstance通过默认构造方法创建该类的对象,在JDBC中只需要将Driver类加载进内存即可,所以无需使用newInstance()。

注:关于Class.forName()与newInstance()方法的具体使用可观看下一节课程:https://class.imooc.com/lesson/2086#mid=49480

2、“反射不用重新打包、发布”这句话的具体使用场景在哪里呢,还请同学再具体描述一下问题。

祝学习愉快~

  • 童真模式启动 提问者 #1

    2、就是math项目里在原有基础上新增一个乘法类

    2021-09-07 10:17:42
  • 同学你好,这里表达的含义是:当新增功能时,未使用java反射的程序,需要对源代码进行修改编写,即要对case1进行修改,代码的可维护性不高;但是使用了反射机制书写的程序,当新增“乘法”功能时,则无需对case2进行任何修改程序即可正确运行,提高了代码的可维护性。

    祝学习愉快~

    2021-09-07 11:49:06
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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