나는 abstract class Abstr<T>
이고 연장자는 class Ext<T>
입니다. 내가 확장명이 초기화되었으므로 그 유형을 반환 할 수있는 Abstr
이 필요합니다. 지금까지 나는 유형을 생성자에 제공 한 다음이를 저장하도록 superconstructor를 호출하여이 작업을 수행했습니다. 하지만 이것 역시 반사회적으로 작용할 것입니다. 지금까지처럼 말했다 :Java의 수퍼 클래스 생성자에서 확장 제네릭 클래스의 제네릭 형식을 가져 옵니까?
public abstract class Abstr<T> {
private Class<T> type;
public Abstr(Class<T> _class) {
this.type = _class;
}
}
public class Ext<T> extends Abstr<T> {
public Ext(Class<T> _class) {
super(_class);
}
}
public void someMethod() {
Ext<String> ext = new Ext<String>(String.class);
}
다음 호출하는 생성자의 종류에 저장해야하는 추상 클래스의 기본 생성자를 호출합니다 연재 기본 생성자와 같은 생성자를 호출하는 저를 제거해야 반사를 사용 :
public Abstr() {
this.type = (Class<D>) this.getClass().getTheTypeParameter(); // something along these lines
}
을
감사합니다.
질문은 무엇입니까? 왜 단순히 그것을 시도하고 볼 수 있습니까? – duffymo
질문은 반사와 함께하는 방법입니다. 몇 줄의 코드 여야합니다 .. – Pete
@ Pete : 실제로 'String.class' 유형을'Ext '로 전달하지 않고는 할 수 없습니다 –