我今天正在查看一些代码,我遇到了一段代码,使用反射来获取通用对象,并根据类型对其执行不同的操作。我之前从未见过这样的东西,我想知道在java中使用反射的优缺点是什么?
答案 0 :(得分:4)
Java中没有反射的优点或缺点。这是一个你应该在特定情况下使用的工具。例如:
所以基本上甚至没有问题,你应该使用或不使用反射,这是一个情况问题。你应该不使用反射,如果可以在不使用99.99%的情况下完成工作。
<强> UPD 强>
你不能用它来做一切吗?就像你是一个非常大的混蛋一样,你可以用它来调用你调用的每一种方法,那么是什么阻止你这样做呢?
主要是缓慢,无法维护的代码,丢失编译时代码检查,破坏封装。
答案 1 :(得分:2)
使用反射来获取通用对象并执行不同的操作 它基于类型
一般来说,出于性能,清晰度和稳健性的原因,这通常是一个坏主意。
它抛弃了静态类型系统的优点;如果传入反射代码未处理的类型,则会出现运行时错误而不是编译时错误。如果其中一个类改变了实现(例如重命名方法),那么在编译时也不会检测到它。
如果这些不同的类型有共同之处,那么通常使用多态来处理这种情况会更好:将通用性抽象为接口或抽象类;然后,每个子类可以实现它所需的特定行为,而无需其他代码使用反射进入内部。
如果这些不同类型的不有任何共同之处,那么为什么要一起处理它们呢?