java.lang.Class
特定の .java ファイルからクラスのオブジェクトをインスタンス化するにはどうすればよいですか?
JUnit テストを自動生成するアプリケーションを作成したいと考えています。そのためには「メソッド」オブジェクトが必要で、「メソッド」オブジェクトには「クラス」オブジェクトが必要です。
java.lang.Class
特定の .java ファイルからクラスのオブジェクトをインスタンス化するにはどうすればよいですか?
JUnit テストを自動生成するアプリケーションを作成したいと考えています。そのためには「メソッド」オブジェクトが必要で、「メソッド」オブジェクトには「クラス」オブジェクトが必要です。
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.文字列)
クラス String の完全な名前がわかっている場合は、Class.forName(className) メソッドを使用してクラス Object を取得してみませんか?
たとえば、クラス名が の場合yakam.yale.MyClass
、単に
Class.forName("yakam.yale.MyClass");
そしてゲームがプレイされます!