反射机制与面向对象中的封装性是不是矛盾的?如何看待这两个技术?

这两者并不矛盾。封装性相当于是建议其他类去调用当前类的公共方法,而私有方法不建议去调用,因为公共的方法可能比私有的方法更好,公共方法里面可能添加了一些逻辑。如果非要调用私有的方法,也可以调用,那我们就通过反射的方式去调用。

封装性:其主要体现是将属性和方法设置为私有的使其在其他类中调用时无法访问该类中内部的私有属性和私有方法,隐藏了内部的细节,保证了代码的安全性。如果我们要想使用其私有属性和私有方法则应该使用该类内部的public方法进行调用。

反射:指的是我们在程序运行期间可以借助于反射的API获取任意对象的属性和方法,并且能够操作任意类的属性和方法。这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 反射最大的特点就是动态性。 而反射解决的是能不能调用的问题,它可以调用私有方法,但是通常我们不建议调用。

通过直接new的方式和反射的方式都可以调用公用的结构,那么我们在开发中用哪个?

建议用new的方式(编译的时候就确定了要初始化的对象)。
什么时候用反射的方式:反射的特征:动态性。不确定要去new那个对象就可以用反射的方式。


版权声明:本文为qq_55991094原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_55991094/article/details/119828864