3

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

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

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

一般事项:

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

我还有一些问题:

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

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

4

1 回答 1

2

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

我可以假设可以在分析器代码中使用自省 - 例如,
由于有许多框架使用 getter 和 setter ,因此这些方法的效率非常重要,
因此这是 mabye 分析器应该首先研究的东西。

随意添加更多问题

于 2012-11-12T13:58:15.303 回答