这可能是一个简单的问题,
我没有机会使用java.lang.reflect
包及其相关类。但我知道 Java 编译器使用反射来获取类信息。
我的问题是为什么反射包在被编译器本身使用时被Java公开了?任何人都可以阐明我们使用反射包的情况吗?
这可能是一个简单的问题,
我没有机会使用java.lang.reflect
包及其相关类。但我知道 Java 编译器使用反射来获取类信息。
我的问题是为什么反射包在被编译器本身使用时被Java公开了?任何人都可以阐明我们使用反射包的情况吗?
简而言之,每当您想自省类并确定它们的结构时,请按名称(字符串)等调用方法。
许多框架将使用它。
例如,如果您在 Spring 配置 (XML) 文件中指定属性,它将采用该字符串(例如“位置”),派生一个方法名称(例如“setPosition”),然后调用它。请注意,在这种情况下,您从一个字符串开始,并在运行时派生/调用该方法。编译器根本没有参与。
您可以使用具有该功能的元编程,非常强大,而且成本也很高,没有提到它的困难。但在某些情况下,该功能变得很有帮助。
哇很有趣 - 我刚刚在“Core Java 2”(Horstmann,Ch 5 - 继承)中读到了这个:
反射库为您提供了一个非常丰富和精细的工具集来编写动态操作 Java 代码的程序。...在 JavaBeans 中大量使用,Java 的组件架构。使用反射,Java 可以支持 Visual Basic 用户已经习惯的工具。
总的来说,这是一个相当强大的功能。在API 页面查看更多信息
在过去,我们会编写这样的程序:
但现在有了反思:
编写/修改类、方法等
如果您有兴趣,请尝试我在下面提供的链接作为来源。希望这个
帮助和好问题。
来源华盛顿大学