4

java.lang.Class特定の .java ファイルからクラスのオブジェクトをインスタンス化するにはどうすればよいですか?

JUnit テストを自動生成するアプリケーションを作成したいと考えています。そのためには「メソッド」オブジェクトが必要で、「メソッド」オブジェクトには「クラス」オブジェクトが必要です。

4

2 に答える 2

6

Java 6 以降にはコンパイラ用の API があります: http://www.javabeat.net/2007/04/the-java-6-0-compiler-api/

上記のリンクには例が含まれています。

ここに別の例があります - http://www.java2s.com/Code/Java/JDK-6/JavaCompilertoolshowyoucancompileaJavasourcefrominsideaJavaprogram.htm

コンパイルしたファイルをロードするには、クラスローダーを使用します。http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.htmlに例があり、http ://www.javaworld.com/jw-10-1996/jw-10-に別の例があります。 indepth.html

これらすべてを簡素化するライブラリがあると思うでしょう。見つけられませんが、まだ探しています。

その間、関数をコンパイルしてプロットする ibm からの本当に素晴らしい記事があります - http://www.ibm.com/developerworks/java/library/j-jcomp/index.html

http://docs.codehaus.org/display/JANINO/Homeが見つかりました - これはプロセスを簡素化するライブラリです。javax.tools API を使用するように構成することをお勧めします (「Janino とは」の段落の最後の文を参照してください)。

先ほどのグーグルスナークでごめんなさい。


クラスオブジェクトが必要なだけかもしれないと思いました。

MyClass というクラスがある場合、関連するクラスはMyclass.classです。それはおそらく明らかですが、おそらくそれだけで十分です。

文字列にクラス名がある場合は、このメソッドを使用できます - http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#forName(java.lang.文字列)

于 2012-07-23T00:22:55.693 に答える
1

クラス String の完全な名前がわかっている場合は、Class.forName(className) メソッドを使用してクラス Object を取得してみませんか?
たとえば、クラス名が の場合yakam.yale.MyClass、単に

Class.forName("yakam.yale.MyClass");

そしてゲームがプレイされます!

于 2013-06-03T14:28:10.673 に答える