【问题标题】:Bean introspection in Java [closed]Java中的Bean自省[关闭]
【发布时间】:2012-10-31 18:53:43
【问题描述】:

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

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

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

一般的东西:

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

我还有一些问题:

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

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

【问题讨论】:

    标签: java javabeans introspection


    【解决方案1】:

    我不确定他们想知道什么。
    可以使用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个人资料应该首先研究的东西。

    欢迎添加更多问题

    【讨论】:

      猜你喜欢
      • 2014-05-30
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多