Java의 리플렉션을 가지고 놀고 있습니다. 나는 추상적 인 클래스 Base
을 생성자와 함께 가진다.리플렉션을 사용하여 추상 기본 클래스에서 생성자에 액세스
abstract class Base {
public Base(String foo) {
// do some magic
}
}
나는 추가 클래스가 Base
까지 확장되어 있습니다. 그들은 많은 논리를 포함하지 않습니다. Base
의 생성자로 인스턴스를 만들고 싶습니다. 파생 클래스에 프록시 생성자를 작성하지 않아도됩니다. 물론 Reflection을 사용하여 파생 클래스를 인스턴스화하려고합니다. 말 :
Class cls = SomeDerivedClass.class;
Constructor constr;
constr = cls.getConstructor(new Class[] { String.class }); // will return null
Class clsBase = Base.class;
constr = clsBase.getConstructor(new Class[] { String.class }); // ok
Base obj = (Base) constr.newInstance(new Object[] { "foo" }); // will throw InstantiationException because it belongs to an abstract class
아이디어, 어떻게 Base 's 생성자를 사용하여 파생 클래스를 인스턴스화 할 수 있습니까? 아니면 그 벙어리 프록시 생성자를 선언해야합니까?
수업을 시작하기 전에 모든 것이 컴파일되고 있습니까? – gabuzo
예, 정상적으로 컴파일됩니다. 이것은 단순한 예이며 catch 절이 없지만 기본적으로이 코드는 정상적으로 컴파일됩니다. 아, 그리고'Base'는 빈 기본 생성자를 추가로 가지고 있습니다 (javac이 주장했습니다). – craesh