私はJavaで次のことをしようとしています:
文字列のコレクション (1 から 10 000 の間) があり、各文字列には、クラスの同じ抽象メソッドの異なるメソッド本体 (Java コードで記述されています) が含まれています。例えば:
string1= "int a=1;"
string2="System.out.println(\"HelloWorld\");"
...
各文字列は、次の抽象メソッドの実装である可能性があります。
abstract class FOO{
public abstract void doSomething();
}
文字列ごとに、使用する FOO のインスタンスを生成したいと思います。
何が最善の方法なのかよくわかりません。ウェブを検索して、次の提案を思いつきました。
- Java 6 コンパイラ API を使用して .class ファイルを生成し、それらをロードします。
- cglib のようなバイトコード操作ライブラリを使用して、コンパイル コードを変更します。
これらは少し複雑に見えるので、他に提案はありますか(少なくとも私には)...
ご協力いただきありがとうございます
編集:
私は自分の問題について間違った方向に進んでいる可能性があります。これが私が最終的に達成しようとしているものです:
ツリー内のノードを表すインターフェースがあります
public interface Node{
public <T> void process(T input);
/* ... 私の問題とは関係のない他の方法 ...*/ }
T のインスタンスをノードに提供すると、それに対して何らかの処理が行われ (ノードの他のメソッドへのアクセスが必要になる場合があります)、それが子ノードに渡されます。
問題は(プログラムの仕様)です。プログラムは、そのメソッド本体を含むテキストファイルからノードを読み取り、構築します(本体はJavaにあります)。次に、ツリーを構築して返します。
これを行うには、テキスト ファイルで提供されているメソッドごとに Node の実装を何らかの方法で生成する必要があるという印象を受けました。私が間違っているかもしれませんし、もっと良い方法があるかもしれません...