java - Java 中的 Bean 自省(introspection)

标签 java javabeans introspection

<分区>

我正在学习 Java 的工作面试。 他们告诉我要学习 Beans 自省(introspection)的概念,所以我在网上搜索并 阅读几个网站,包括下一篇文章:

据我了解:Bean 与 Java 中的任何其他对象类一样,但此类必须具有以下功能:

  1. 所有属性都是私有(private)的(使用 getters/setters)
  2. 公共(public)无参数构造函数
  3. 实现可序列化。

一般的事情:

  1. 内省(introspection)让我有可能在运行时“检查”一个对象,并且 这样我就可以获得类属性名称、方法名称构造函数等。
  2. 内省(introspection)使用反射来获取类的信息。

我还有一些问题:

  1. 为什么我需要这种机制,也就是说,在什么情况下我应该使用内省(introspection)而不是使用任何其他东西?
  2. bean 的自省(introspection)和常规自省(introspection)有什么区别吗?
  3. 除了我可以使用的方法外,它是如何工作的?

如果有人能给我关于这个主题的看法,或者给我一些有用信息的链接,我会很高兴。

最佳答案

我不确定他们想知道什么。
您可以使用 apache-bean-utils 等框架查询有关 bean 结构的信息。
我手动开发了这样的代码(大错特错!:))-
我使用了基于 java bean 符号的递归机制(即 - setter 必须以“set”开头,
对于 boolean 值,getter 以“is”开头,对于所有类型,以“get”开头)
然后您可以使用此代码来自动执行某些行为 -
在我的例子中,我编写了一个工具来解析 WSDL,并在 WS 调用之间创建绑定(bind) 和我们的应用程序实体通过代码。
我们应用程序的用户提供了一个 XML 指示如何执行映射 -
即 - 假设 WS 调用返回了一个 Person 对象,但在我们的应用程序中我们有一个学生实体
所以 XML 定义了如何执行映射,我使用像 apache-bean-utils 这样的代码来执行自省(introspection)
并了解要调用的 setter 和 getter。
这与通常在 Java 应用程序中所做的相反:
1. 从 WSDL
生成 Java 客户端(即使用 wsdl2java) 2. 使用客户端代码编译应用程序。

我可以假设内省(introspection)可以用在探查器代码中——例如,
由于有许多框架使用 getters 和 setters ,因此这些方法的效率非常重要,
所以这是 mabye profiles 应该首先研究的东西。

欢迎提出更多问题

关于java - Java 中的 Bean 自省(introspection),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13342199/

相关文章:

java - 检查并打印嵌套的 Javabean 属性

java - 我可以测试使用 Mockito 自省(introspection)的代码吗?

session - 使用有状态 session Bean 跟踪用户的 session

java内省(introspection)查找类的成员

Python 反射和类型转换

java - 将信息从应用程序传递到处理程序级 SOAP

Java:无法获取文件的绝对路径

java - 程序永远找不到扫描仪

java - AndroidManifest 中的工具替换

java - 如何获取格式化日期?