如何使用Class的实例作为泛型类型?

时间:2018-02-05 21:27:56

标签: java class generics reflection

我想在java 8中做这样的事情:

public void example(Class clazz) {
    MyClass<clazz> myObj = new MyClass<clazz>();
}

但我得到“找不到符号:符号类clazz位置:”

这可能吗?谢谢!

3 个答案:

答案 0 :(得分:1)

通用类型参数必须是类型名称,而不是变量名称。

为您的方法声明泛型类型参数,并在参数和变量声明中使用它。

public <T> void example(Class<T> clazz) {
    MyClass<T> myObj = new MyClass<T>();
}

通常使用单个大写字母作为类型变量,例如T,以便将它们与正常变量区分开来,例如clazz

答案 1 :(得分:0)

你可以这样做:

public void example() {
    MyClass<Class> myObj = new MyClass<Class>();
}

您不能将变量放在&lt;&gt;

答案 2 :(得分:0)

由于您希望clazz成为类型,因此必须将其作为类型参数传递:

public <T> void example() {
    MyClass<T> myObject = new MyClass<T>();
}