리플렉션을 사용하여 내부 클래스의 객체를 만들고 싶습니다. 나는 반사를 사용하여 내부 클래스 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가 : 나는 예외 다음 얻고있다 인수 내가 잘못 뭐하는 거지
의 번호를 잘못?
나는 다음과 같은 코드를 사용하고 있습니다 :
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