Tipsi:
私はClass.forNameの()メソッドを介して得られることクラスのメソッドを使用する必要があります。私はあなたの例をあげます:
public class Greeter {
public String getGreeting() {
return "Hello World!";
}
}
今、私は動的に文字列を使用して、このクラスを取得し、そのようにそれのメソッドを使用します:
Class c = Class.forName("Greeter");
System.out.println(c.getGreeting());
JavaはまだGreeterクラスとしてクラスを認識しないので、今、これは明らかに、動作しませんでした。どのように私はそれがGreeterクラスだという事実をハードコードすることなく、これを行うに行きますか?
エリオットの新鮮:
直接ではなく、あなたはのインスタンスを必要とするClass
メソッドを呼び出すために。例えば、
Class<?> cls = Class.forName("Greeter");
try {
Object o = cls.getConstructor(null).newInstance(null);
System.out.println(((Greeter) o).getGreeting());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
あなたはそれがだ「知っている」していないことをコメントで言及しますGreeter
。あなたは、共通のインターフェイスにプログラムが、それを失敗しなければなりません。それは同様に名前でメソッドを取得することが可能です。例えば、
Object o = cls.getConstructor(null).newInstance(null);
Method m = cls.getMethod("getGreeting", null);
System.out.println(m.invoke(o, null));