클래스 유형별로 인스턴스를 검색하고 싶습니다. 그러나 지금은 제네릭으로 고심하고 있습니다. 내 코드가 작동하지 않고 실제로 이유를 알지 못합니다. 여기있다 : 깨진 create
방법Reflection API를 사용하여 인스턴스를 반환하는 메소드를 적절하게 생성하는 방법은 무엇입니까?
public class Provider {
private String property;
public Provider(String property) {
this.property = property;
}
public <T> create (Class<T> type) throws Exception {
return type.getConstructor(String.class).newInstance(property);
}
}
와
public class Main {
public static void main(String[] args) throws Exception {
Provider provider = new Provider("prop");
AbstractHolder obj = provider.create(DefaultHolder.class);
System.out.println(obj.getProperty());
}
}
Provider 클래스가 여기 내 홀더 IMPL입니다.
public class DefaultHolder extends AbstractHolder {
public DefaultHolder(String field) {
super(field);
}
}
그리고 AbstractHolder 추상 클래스.
public abstract class AbstractHolder {
private String property;
public AbstractHolder(String property) {
this.property = property;
}
public String getProperty() {
return property;
}
}
어떻게하면 내 공급자 클래스에서 제네릭을 수정할 수 있습니까?
PS
문제는이 방법
public <T> create (Class<T> type) throws Exception {
return type.getConstructor(String.class).newInstance(property);
}
유일한 문제는'create' 메소드의 반환 형식이없는 점이다. 'public T create (...) '를 사용하십시오. –
Marco13
예, 감사합니다. – Aaron