- PR -

インナークラスのリフレクションについて

1
投稿者投稿内容
shin
会議室デビュー日: 2004/10/05
投稿数: 16
投稿日時: 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/09/01
投稿数: 13
投稿日時: 2004-10-05 20:17
引用:

shinさんの書き込み (2004-10-05 19:40) より:
Error:java.lang.NoSuchMethodException: Reflection$InnerReflection.<init>(java.lang.String, java.lang.String, java.lang.String)
というエラーがでてしまいます。

public class InnerReflection {



public static class InnerReflection { ... }
としてください。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 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});
で動きます。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2004-10-06 08:56
すでにさくさんとかつのりさんの書き込みで答えが出ているのでいいとは思いますが、

NoSuchMethodExceptionが出たということは、指定した引数のコンストラクタが
見つからないことを意味していますから、
Class.getConstructors()して返ってきたConstructor配列の要素に対して
getParameterTypes()を実行し、各コンストラクタの引数を調べてみれば
自力で答えが見つかったかもしれませんね。
shin
会議室デビュー日: 2004/10/05
投稿数: 16
投稿日時: 2004-10-06 09:20
インナークラスのリフレクションは初めてだったので、
悩んでしまいました。
自力で解決できましたね。。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)