实例化泛型参数

Hao*_*Hao 6 java generics

我正在学习Java的通用,我陷入了一些实例化从泛型参数接收的类型的问题(这在C#中是可能的)

class Person { 
    public static <T> T say() {
        return new T; // this has error
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过这个:Java中的泛型 - 实例化T

public static <T> T say(Class<?> t) {
    return t.newInstance();
}
Run Code Online (Sandbox Code Playgroud)

错误:

incompatible types
found   : capture#426 of ?
        required: T
Run Code Online (Sandbox Code Playgroud)

这不起作用.以下看起来没问题,但它需要实例化一些类,不能用于静态方法:在java中实例化泛型类型

public class Abc<T>
 {

    public T getInstanceOfT(Class<T> aClass)
    {
       return aClass.newInstance();
    }      

} 
Run Code Online (Sandbox Code Playgroud)

这是Java人们说的类型擦除吗?这是类型擦除的限制吗?

这个问题的解决方法是什么?

Chr*_*s B 8

你非常接近.你需要替换Class<?>(意思是"任何类型的类")Class<T>(意思是"类T"):

public static <T> T say(Class<T> t) throws IllegalAccessException, InstantiationException {
    return t.newInstance();
}
Run Code Online (Sandbox Code Playgroud)