[英]How to proper generify a method which returns an instance using Reflection API?
我想按Class类型检索实例。 但是现在我在泛型方面苦苦挣扎。 我的代码不起作用,我也不知道为什么。 这里是:
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());
}
}
提供者类的create
方法已损坏
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);
}
}
这是我的Holder展示。
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;
}
}
有什么想法可以解决我的Provider类中的泛型吗?
聚苯乙烯
问题是这种方法
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());
}
}
public class Provider {
private String property;
public Provider(String property) {
this.property = property;
}
public <T extends AbstractHolder> T create(Class<T> type) throws InstantiationException, IllegalAccessException, IllegalArgumentException, SecurityException, InvocationTargetException, NoSuchMethodException {
return type.getConstructor(property.getClass()).newInstance(property);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.