0

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

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

上記の方法でユーザーが入力します。

メソッドをジェネリック クラスでラップし、定義済みの一連のテスト ケース (true、false) を使用してその機能をチェックします (false、true を返す必要があります)。

4

1 に答える 1

1

おそらく、生成されたクラスを読み込んでClassloader.defineClass(..)byte[]を使用して、Classオブジェクトを解決/構築します。クラスを適切に解決するには、このクラスによって参照されるすべてのリソースが、使用しているクラスローダーインスタンスで利用可能である必要があります。Classオブジェクトを取得したら、それをインスタンス化し、reflectionを使用してメソッドを呼び出すことができます。

于 2011-11-11T22:26:57.043 に答える