リフレクションを使って内部クラスのオブジェクトを作成したいと思います。私はリフレクションを使用して内部クラスCompTypeConfig
を呼び出す必要がありリフレクションを使って内部クラスのコンストラクタを呼び出す方法
//outer class
public final class EMSToCompMessages {
private EMSToCompMessages() {}
//inner class
public static final class CompTypeConfig extends
{
private CompTypeConfig(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
super(builder);
this.unknownFields = builder.getUnknownFields();
}
private CompTypeConfig(boolean noInit) {
this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance();
}
private static final CompTypeConfig defaultInstance;
public static CompTypeConfig getDefaultInstance() {
return defaultInstance;
}
}
:これは私のクラスです。 私は次の例外を取得しています:
java.lang.IllegalArgumentExceptionが:引数
の間違った数が、私は間違って何をやっているの?
私は、次のコードを使用しています:あなたは、パラメータなしなしコンストラクタを持っていCompTypeConfig
型のオブジェクトを作成しよう
Class<?> loadedMyClass = Class.forName("EMSToCompMessages", true, loader);
Constructor constructor = loadedMyClass.getDeclaredConstructor();
constructor.setAccessible(true);
Object obj = constructor.newInstance();
Class[] innerClass = loadedMyClass.getDeclaredClasses();
for (Class<?> getClass : innerClass) {
Constructor ctor = getClass.getDeclaredConstructors()[0];
System.out.println(ctor.getName());
ctor.setAccessible(true);
Object innerObj = ctor.newInstance(obj);// Exception is coming here
}
これは内部クラスではなく、静的ネストされたクラスです。それを構築したい場合は、コンストラクタにパラメータを渡す必要があります。 – shmosel