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();
    }
}
由于parameter
clazz
的任何实例都将扩展class
Test
,因此我希望实现如下功能:

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();
}