反射如何影响应用程序的设计

How Reflection effects the Design of an application

我在 java 上阅读了一些面试问题,我在下面找到了。

Qus. Is It Good to use Reflection in an application ? Ans. No, It's like challenging the design of application

我需要进一步澄清上述答案,因为我了解到反射是 Java 的一个强大功能。

挑战设计是什么意思?

我们必须在什么场景下在应用程序中实际使用反射?

挑战设计意味着您可以:

  1. 使用反射访问 class 的私有成员。
  2. 您可以实例化那些您不应该实例化的 class 实例,例如:您可以使用反射实例化 java.lang.System 而您不打算实例化。
  3. 以及 API 的原始程序员不希望您做的许多其他事情。或者你可以做一些你不应该做的事情。

尽管反射在某些情况下很有用:

  1. 就像使用 FXML 一样,您的解释器会动态加载 FXML 文件并动态设置节点的属性。使用反射。
  2. 如果您曾经为 android 编程过,您一定知道程序员使用 .xml 文件设计他们应用程序的 view。即使在这种情况下,您的小部件也会使用反射动态加载。基本示例,在 android 中:

    <Button  ...
         android:onClick="callMe" />    
    

然后你在.java文件里写callMe(View view)方法。使用反射将此侦听器添加到按钮。

  1. Spring、Hibernate 等框架也使用反射进行处理。

所以反思有利也有弊。

您可能需要参考 this 了解更多信息