Java 如何指定泛型类?
我想在以下代码中泛化类实例化: 旧代码:Java 如何指定泛型类?,java,generics,Java,Generics,我想在以下代码中泛化类实例化: 旧代码: public abstract class Test{ public static Test instantiate(Class clazz)throws Exception{ //instance of clazz extends Test return (Test)clazz.newInstance(); } } 由于parameterclazz的任何实例都将扩展classTest,因此我希望实现如下功能: publ
public abstract class Test{
public static Test instantiate(Class clazz)throws Exception{ //instance of clazz extends Test
return (Test)clazz.newInstance();
}
}
由于parameterclazz
的任何实例都将扩展classTest
,因此我希望实现如下功能:
public static T <T extends Test> instantiate(Class<? extends Test> clazz){
return clazz.newInstance();
}
如何使用java泛型实现这一点?您混淆了顺序。这是正确的语法:
public static <T extends Test> T instantiate(Class<T> clazz) {
return clazz.newInstance();
}
publicstatict实例化(类clazz){
返回clazz.newInstance();
}
请注意Class尝试以下代码:
public static <T extends Test> T instantiate(Class<T> clazz)
throws InstantiationException, IllegalAccessException {
return clazz.newInstance();
}
publicstatict实例化(类clazz)
抛出实例化异常,IllegalAccessException{
返回clazz.newInstance();
}
在您的第一个代码片段中,测试
和应用程序
之间的关系是什么?应用程序
是否继承测试
?
public static <T extends Test> T instantiate(Class<T> clazz)
throws InstantiationException, IllegalAccessException {
return clazz.newInstance();
}