【问题标题】:Alternative for toString() in javajava中toString()的替代方法
【发布时间】:2012-01-25 01:06:03
【问题描述】:

我拥有的是来自 XML 的未编组的 java 对象。这个未编组的对象的部分被发送到各个类进行处理。我需要记录未编组对象的内容。我可以轻松地覆盖 toString() 方法,但问题是在这种情况下,类是在构建时使用 xjc 生成的,我无法覆盖这些类中的 toString(),因为它们将在再次生成时被删除。

我正在寻找其他替代方法来打印内容。有什么想法吗?

【问题讨论】:

  • 如果你可以轻松地覆盖 toString() 那你为什么不呢?您是否正在寻找一个困难/复杂的解决方案?
  • toString() 没有做什么你想做的事?
  • 问题在于,在这种情况下,这些类是在构建时使用 xjc 生成的,我无法覆盖这些类中的 toString(),因为它们将在再次生成时被删除。
  • @TejasArjun 如果正在重新生成类,您添加的新方法将如何合并回来?
  • @Pangea 这就是我面临的问题。如果我覆盖 toString(),我如何合并回来?顺便说一句,下面线程中的一位读者 bmargulies 建议使用 xjc 插件。我现在正在查看详细信息。

标签: java xml jaxb xjc


【解决方案1】:

你可以使用一个 xjc 插件来生成你想要的 toString。

【讨论】:

    【解决方案2】:

    不要使用toString() 进行编组。这不是它的目的。 (请参阅 java.lang.Object 的 javadocs,了解该方法 的用途。)

    即使您决定手动实现编组/解组,也不应尝试为此目的使用toString()

    【讨论】:

      【解决方案3】:

      您可以编写一个使用反射来检查对象的实用程序类,并返回它的字符串表示形式(以您需要的任何格式)或让它直接记录字符串表示形式。

      【讨论】:

      • 我考虑过那个解决方案。也许我可以使用像 xstream 这样的库来以 xml 格式登录..只是在寻找任何其他解决方案。
      【解决方案4】:

      编写一个辅助类,它采用未编组的 Java 对象并使用反射为您提供其字符串表示,如果您不想使用反射,因为您知道您的 xsd 和未编组的内容,您可以对它们进行硬编码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-23
        • 2014-03-31
        • 2018-01-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多