Java面试:反射机制

面试官:直接 new 对象不行吗,为何用反射?

​ new 是静态编译,只能用于编译期就能确定的类型, 而反射可以在运行时才确定类型并创建其对象。Java的反射机制就是动态编译,增加程序的灵活性,解耦。

​ 具体来说就是静态编译是在编译的时候把你所有的模块都编译到程序中,当你启动这个程序的时候所有模块都加载进来了。当程序比较大时,加载的过程(就是当你运行程序时初始化的过程)就比较慢了。动态编译就不一样了,你编译的时候那些模块都没有编译进去,一般情况下你可以把那些模块都编译成dll,这样你启动程序(初始化)的时候这些模块不会被加载,而是在运行的时候,用到那个模块就调用哪个模块。

​ 比如:Spring中的 IOC(工厂模式)

https://blog.csdn.net/a745233700/article/details/82893076
分别说说 使用new创建对象 和 通过反射创建对象 的区别,优劣势?

什么是反射

反射就是把 Java 类中的各种成分映射成一个个的 Java 对象。

​ Java反射机制的本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。其核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。

和 new 创建对象 的区别

https://www.cnblogs.com/jiazhutao/p/12447385.html

​ (1)new只有在知道类名之后才能new,而反射有时候不需要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Quantum_Wu

一起加油呀ヾ(◍°∇°◍)ノ゙

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值