【发布时间】:2010-09-07 10:45:11
【问题描述】:
什么是反射,它为什么有用?
我对@987654322@ 特别感兴趣,但我认为任何语言的原则都是相同的。
【问题讨论】:
-
对我来说,这是一种在运行时获取类名并创建该类对象的方法。
-
因为这是一个流行的问题,所以我想指出反射(没有注释)应该是解决问题时使用的最后一个工具。我使用它并且喜欢它,但它抵消了 Java 静态类型的所有优点。如果您确实需要它,请将其隔离到尽可能小的区域(一个方法或一个类)。在测试中使用它比在生产代码中使用它更容易接受。使用注释应该没问题——如果可以避免的话,重点是不要将类或方法名指定为“字符串”。
-
除了@BillK 的评论:反射非常强大,我称之为魔法。拥有权利的同时也被赋予了重大的责任。仅当您知道自己在做什么时才使用它。
-
@Trap 我不知道,这就是我建议反对它的原因——当我遇到其他可用解决方案时的反射时,或者不是孤立于非常小的反射时,这真的很烦人, 受约束且清晰记录的代码区域。但是问程序员为什么要做他们所做的事情超出了我的回答能力。
标签: java reflection terminology