リファクタリングバリューオブジェクトのクレイジー継承階層 - すべてのフィールドとタイプのリストを取得する方法は?

StackOverflow https://stackoverflow.com/questions/4349606

質問

したがって、基本的には、継承階層を手動で調整する必要があります。クラスが完璧であり、余分なフィールドがないようにしたいのですが、それらはDTOだけです。しかし、迷子になって重複したフィールドを追加するのは本当に簡単で、私が探しているものがすでにそこにあるかどうかを見るのは本当に難しいです。私が本当に望んでいるのは、継承されたフィールド(プライベート)を含むクラス内のすべてのフィールドをリストする方法です。ゲッターやセッターがすべてを乱雑にしていない平らなフィールドのみのビューのように。

右クリック/ファイルメンバーを使用してNetBeansで表示する方法を見つけましたが、コピーしてテキストファイルなどに保存することはできません。

基本的にこれらの列だけです:

Name     Type            Superclass
id       int  
theDate  java.util.Date  com.something.AbstractDTO
...

誰かがそれをする方法を知っている、または私がやろうとしていることをやるより良い方法を知っていますか?

役に立ちましたか?

解決

既存のツールが見つからない場合、DTOクラスからこの情報を抽出するためにリフレクションを使用するものを書くのは難しくないはずです。更新のためにプログラムを再コンパイルして再実行する必要がありますが、それは何もないよりはましです。

他のヒント

Eclipseの「階層ビュー」を使用できます。クラスをクリックすると、メンバーを取得できます。 「すべての継承されたメンバーを表示する」アイコンをクリックすると、メンバータイプ(静的フィールド、静的メソッド、インスタンスフィールドなど)でソートされたビューが表示されます。通常の方法でインスタンスフィールドを選択して、右クリックして、「資格のある名前をコピーする」ことができます。このようなものが得られます。これには、メンバーが元々定義されていた場所が含まれます。

nz.ac.vuw.ecs.kcassell.cluster.MatrixBasedAgglomerativeClusterer.distanceMatrix
nz.ac.vuw.ecs.kcassell.cluster.MatrixBasedAgglomerativeClusterer.originalMatrix
nz.ac.vuw.ecs.kcassell.cluster.DisjointClusterer.originalMatrix
nz.ac.vuw.ecs.kcassell.cluster.DisjointClusterer.originalSeed1
nz.ac.vuw.ecs.kcassell.cluster.DisjointClusterer.originalSeed2
nz.ac.vuw.ecs.kcassell.cluster.MatrixBasedAgglomerativeClusterer.previousIteration
...

この例では、「OriginalMatrix」が定義されているのは増殖しています。 (階層ビューではさらに簡単に表示されます。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top