2011-11-11 15 views
0

javax.tools.JavaCompilerjavax.tools.ToolProviderを使用して、大きな文字列内のすべての定義済みクラスをユーザー入力文字列(メソッドである必要があります)にラップして、コード内で実行しています。あらかじめ定義された一連のケースで前記関数をテストするためにコンパイルされたクラスを(同じコード内で)実行時まで存在しないようにインスタンス化する方法はありますか?Java実行間のJava文字IO

例:ユーザーは、引数として送信された反対のブール値を返すメソッドを作成するように求められます。

上記の方法のユーザータイプ。

私はに生成されたクラスを読み込むことで、

+0

Class.forName? – r0ast3d

+0

@ r0ast3d:Class.forNameは、現在のクラスのクラスローダーがこのクラスを探す場所のどこかにクラスを格納する場合にのみ役に立ちます。 –

答えて

1

おそらく(偽、真の背中を取得する必要があります)メソッドを中心にジェネリッククラスをラップし、それが機能だチェックする(TRUE、FALSE)、テストケースの定義済みのセットを使用しますbyte[]を使用し、Classloader.defineClass(..)を使用してClassオブジェクトを解決/構築します。クラスを正しく解決するには、このクラスで参照されるすべてのリソースを、使用しているクラスローダーインスタンスで使用できるようにする必要があります。 Classオブジェクトを取得したら、それをインスタンス化してreflectionを使用してメソッドを呼び出すことができます。