我想在以下代码中生成类实例化:
旧代码:
public abstract class Test{
public static Test instantiate(Class clazz)throws Exception{ //instance of clazz extends Test
return (Test)clazz.newInstance();
}
}
因为参数clazz
的任何实例都会扩展类Test
,所以我想实现这样的目标:
public static T <T extends Test> instantiate(Class<? extends Test> clazz){
return clazz.newInstance();
}
它给出了以下编译错误:
Unspecified Bound
如何使用java泛型?
答案 0 :(得分:6)
你把订单混淆了。这是正确的语法:
public static <T extends Test> T instantiate(Class<T> clazz) {
return clazz.newInstance();
}
请注意,Class<? extends Test>
已更改为Class<T>
。当然,您还需要处理任何可能的例外情况。
答案 1 :(得分:1)
试试这段代码:
public static <T extends Test> T instantiate(Class<T> clazz)
throws InstantiationException, IllegalAccessException {
return clazz.newInstance();
}