4

请问,如何在 XML 中定义像 Integer.MAX_VALUE 这样的 java 常量?我知道如何使用枚举,但我有第三方库并且必须使用常量进行操作。例如,在 xml 文件中存在一些值,我希望在生成的 java 类中应该将其声明为常量。

XML:

 <person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    <code>123</code>
    <number>1234-456</number>
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
 </person>

爪哇:

 public class Person {
 private String firstname;
 private String lastname;
 private PhoneNumber phone;
 private PhoneNumber fax;
 // ... constructors and methods
}

public class PhoneNumber {
private int code;
private String number;
// ... constructors and methods
 }     

这行得通。但应该是这样的:

XML:

 <person>
  <firstname>Joe</firstname>
  <lastname>Walnes</lastname>
  <phone>
    **<const>**PnoneNumber.LOCAL**</const>**
  </phone>
  <fax>
    <code>123</code>
    <number>9999-999</number>
  </fax>
 </person>

Java应该是:

 public class Person {
 private String firstname;
 private String lastname;
 private PhoneNumber phone;
 private PhoneNumber fax;
 // ... constructors and methods
}

public class PhoneNumber {
public static final PnoneNumber LOCAL=new PhoneNumber(123,"1234-456");
private int code;
private String number;
// ... constructors and methods
 }

我可以在没有自定义转换器的情况下以简单的方式做到这一点吗?

非常感谢。

4

1 回答 1

1

我研究了几个 XML-POJO 生成器,尤其是那些使用 XML Schema (XSD) 定义类的生成器,令我惊讶的是,没有一个提供修改属性的能力。

如果您想保留当前的解决方案,我认为最简洁的方法是通过您自己的自定义转换器扩展转换,正如您自己所说的那样。

如果您使用使用 XML Schema 的东西,您总是可以使用该属性fixed="constant"作为标准初始化,尽管它当然不会保留语义。

然而,用另一种方式解决这个问题可能会更好。这些是常量,它们不应该改变,所以也许最好将它们定义在一个单独的文件中。

于 2012-06-30T21:05:12.857 回答