这可能是一个简单的问题,
我没有机会使用java.lang.reflect
包及其相关类。
但我知道Java编译器使用反射来获取类信息。
我的问题是为什么编译器本身使用了Java时反射包?任何人都可以了解我们使用的情况反映包裹吗?
答案 0 :(得分:4)
简而言之,无论何时想要对类进行内省并确定其结构,都可以按名称(String)等方式调用方法。
很多框架都会使用它。
e.g。如果你在Spring配置(XML)文件中指定属性,它将获取该字符串(例如“position”),派生一个方法名称(例如“setPosition”),然后调用它。请注意,在这种情况下,您已从字符串开始,并在运行时中派生/调用该方法。编译器根本没有参与。
答案 1 :(得分:1)
哇有趣 - 我刚刚在"Core Java 2"(Horstmann,第5章 - 继承)中读过这篇文章:
反射库为您提供了一个非常丰富和精细的工具集 编写动态操作Java代码的程序。 ......很重 在JavaBeans中使用,Java的组件体系结构。使用 反思,Java可以支持像用户那样的工具 Visual Basic已经习以为常。
总的来说,这是一个相当强大的功能。请参阅API page
了解更多信息答案 2 :(得分:1)
你可以使用元编程与该功能,非常强大,也很昂贵,没有提到它的困难。但有些情况下该功能会有很大的帮助。
答案 3 :(得分:0)
在过去,我们会编写一个这样的程序:
但现在有了反思:
编写/修改类,方法等
如果您有兴趣,请尝试我提供的链接作为来源 下面。希望这个
帮助和好问题。