問題タブ [sun-codemodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JAXB、XJC: クラス アウトラインへのフィールドの生成
私の質問は、JAXB プラグイン、特にClassOutline
内部の記述に関するものです。
フィールドcom.sun.tools.xjc.outline.ClassOutline
があります:
- 目標
- 参照
- 実装クラス
- implRef
コード:
私の知る限り(SO Answer):
target
- に情報を保持しますModel
。これは、解析および分析されたスキーマ ファイル (.xsd) を表します。ref
は通常 に等しくimplClass
、両方が成立しますCode Model
implClass
新しく生成されたフィールド、メソッドなどを配置するのに適した場所です。implRef
- それは何ですか?
で記述されたクラスに新しいフィールドを追加したいClassOutline
ので、コードは次のようになります。
上記のコードが実行され、com.sun.tools.xjc.outline.ClassOutline.getDeclaredFields()
メソッドを使用した後に機能する別のプラグインがあるまで、それはうまく機能します。
想像してみてください-Plugin1
新しいフィールドを作成し、次にCopyablePluginclone()
が実行され、すべてのフィールドをコピーするメソッドを追加したいと考えています。ただし、次のようなusesメソッドからすべてのフィールドを取得するため、-CopyablePlugin
によって新しく生成されたフィールドは表示されません。Plugin1
ClassOutline
CopyablePlugin
com.sun.tools.xjc.outline.ClassOutline.getDeclaredFields()
これは、フィールド (これは- 解析された XSD スキーマです)getDeclaredFields()
からプロパティを取得し、 に生成されたコードを完全に無視することに注意してください。ClassOutline.target
Model
ClassOutline.implClass
それはバグですか、それとも機能ですか?
今のところ、回避策を見つけました。同じフィールドがプロパティとして にも追加されますtarget
:
質問
- の役割を教えてください
ref/implClass/implRef
。 - 完全に新しいフィールド/メソッドをどこで生成する必要がありますか?
ref/implClass
に? - との間で一貫性を保つ必要が
ref/implClass
ありtarget
ますか? に追加された新しいフィールドimplClass
は にも追加されるべきtarget
ですよね? - 正しい
com.sun.tools.xjc.outline.ClassOutline.getDeclaredFields()
ですか?または、ClassOutline からすべてのフィールドを適切に取得するにはどうすればよいですか? たぶん、これはtarget
とimplClass
コンテンツの結合である必要がありますか?