- - PR -
インナークラスのリフレクションについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-10-05 19:40
下記のようなコードにて、インナークラスのコンストラクタをリフレクション
したいのですが、 Error:java.lang.NoSuchMethodException: Reflection$InnerReflection.<init>(java.lang.String, java.lang.String, java.lang.String) というエラーがでてしまいます。 どうすれば、リフレクションすることができるのでしょうか。 初歩的で申し訳ありませが、ご教授願います。 import java.lang.reflect.Constructor; public class Reflection { public static void main(String[] args){ try { Constructor constructor = Reflection.InnerReflection.class.getConstructor(new Class[]{String.class,String.class,String.class}); } catch(Exception e) { System.out.println("Error:" + e.toString()); } } public class InnerReflection { public InnerReflection(){ } public InnerReflection(String a,String b, String c){ System.out.println("インナーコンストラクタ"); } } } | ||||
|
投稿日時: 2004-10-05 20:17
public static class InnerReflection { ... } としてください。 | ||||
|
投稿日時: 2004-10-05 20:20
Reflection.InnerReflection.class.getConstructor(new Class[]{String.class,String.class,String.class});
ですが、 Reflection.InnerReflection.class.getConstructor(new Class[]{Reflection.class,String.class,String.class,String.class}); で動きます。 | ||||
|
投稿日時: 2004-10-06 08:56
すでにさくさんとかつのりさんの書き込みで答えが出ているのでいいとは思いますが、
NoSuchMethodExceptionが出たということは、指定した引数のコンストラクタが 見つからないことを意味していますから、 Class.getConstructors()して返ってきたConstructor配列の要素に対して getParameterTypes()を実行し、各コンストラクタの引数を調べてみれば 自力で答えが見つかったかもしれませんね。 | ||||
|
投稿日時: 2004-10-06 09:20
インナークラスのリフレクションは初めてだったので、
悩んでしまいました。 自力で解決できましたね。。 ありがとうございました。 |
1