1

这可能是一个简单的问题,

我没有机会使用java.lang.reflect包及其相关类。但我知道 Java 编译器使用反射来获取类信息。

我的问题是为什么反射包在被编译器本身使用时被Java公开了?任何人都可以阐明我们使用反射包的情况吗?

4

4 回答 4

4

简而言之,每当您想自省类并确定它们的结构时,请按名称(字符串)等调用方法。

许多框架将使用它。

例如,如果您在 Spring 配置 (XML) 文件中指定属性,它将采用该字符串(例如“位置”),派生一个方法名称(例如“setPosition”),然后调用它。请注意,在这种情况下,您从一个字符串开始,并在运行时派生/调用该方法。编译器根本没有参与。

于 2013-06-04T15:51:56.113 回答
1

您可以使用具有该功能的元编程,非常强大,而且成本也很高,没有提到它的困难。但在某些情况下,该功能变得很有帮助。

http://en.wikipedia.org/wiki/Metaprogramming

于 2013-06-04T15:59:14.910 回答
1

哇很有趣 - 我刚刚在“Core Java 2”(Horstmann,Ch 5 - 继承)中读到了这个:

反射库为您提供了一个非常丰富和精细的工具集来编写动态操作 Java 代码的程序。...在 JavaBeans 中大量使用,Java 的组件架构。使用反射,Java 可以支持 Visual Basic 用户已经习惯的工具。

总的来说,这是一个相当强大的功能。在API 页面查看更多信息

于 2013-06-04T15:55:54.993 回答
0

在过去,我们会编写这样的程序:

  • 编写/修改类、方法等
  • 编译它
  • 运行

但现在有了反思:

  • 编写/修改类、方法等

    • 编译它
    • 运行
    • 编译运行后修改类!

    如果您有兴趣,请尝试我在下面提供的链接作为来源。希望这个

    帮助和好问题。

来源华盛顿大学

于 2013-06-04T16:42:13.800 回答