4

XMLでInteger.MAX_VALUEのようなJava定数を定義する方法を教えてください。enum の使い方は知っていますが、サードパーティのライブラリがあり、定数を操作する必要があります。たとえば、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スキーマ(XSD)を使用してクラスを定義するジェネレーターを調べましたが、驚いたことに、属性を変更する機能を提供するものはありません。

現在のソリューションを維持したい場合は、あなたが自分で言ったように、最もクリーンな方法は、独自のカスタムコンバーターによって変換を拡張することだと思います。

XMLスキーマを利用するものを使用する場合は、常に属性fixed="constant"を標準の初期化として使用できますが、もちろんセマンティクスは保持されません。

ただし、これを別の方法で解決する方がよい場合があります。これらは定数であり、変更すべきではないため、とにかく別のファイルで定義するのが最善かもしれません。

于 2012-06-30T21:05:12.857 に答える