ノードがオブジェクトである動的なJTreeが必要です。ノードが展開されると、宣言されたフィールドを取得するためにリフレクションが使用されます。すべての非プリミティブなフィールドは、再びノードであり、以下同様に再帰的になります。だからここオブジェクトのJTreeとその宣言フィールドをリフレクションで作成する
は私のTreeNodeクラスの短いDESCです:
public TreeNode(Object o){
this.name = o.getClass().getSimpleName();
this.treeobjectclass = o.getClass();
this.isbranch = isBranchObject();
this.properties = initializePropertiesMap();
this.children = //here i will get children with getDeclared fields and
//instantiate new TreeNode for nonprimitive ones
}
質問:子供を通じて再帰的なインスタンス化を行うとき、私は子供の一つに実行したときに
、どのように私は問題を避けることができますコンストラクタが引数を要求するクラス?
Objectの代わりにClassパラメータをコンストラクタに渡す必要がありますか?
- もし私がこれを行うと、後で私はこのクラスのオブジェクトを取得する必要があり、私はclass.getConstructorでそれを試してみてください - もう一度、私はパラメータを持っていません。
この呪われたループから抜け出す方法は?私はリフレクションで全く新しいです。同様の仕事の例は何ですか?
ありがとうございました
これに反射を使用する背景には何がありますか?おそらく_architechture_は、代わりにあなたのために自然にこれらの問題を解決することができます。 –
@JohanSjöberg:リフレクションを使用する理由は、jtreeにチェックボックスがあり、一部のノード/リーフのチェックボックスをクリックすると、フィールド名が動的クエリ生成で使用されるためです。申し訳ありませんが、あなたは "建築"を説明できますか?私はそれに精通していない。 Thanx – Julia
私がここに暗示しようとしているのは、リフレクションを使用するのではなく、プログラムを設計する場合、通常のinstationロジックを使用して解決策を見つけることができるということです。 –