我想在java 8中做这样的事情:
public void example(Class clazz) {
MyClass<clazz> myObj = new MyClass<clazz>();
}
但我得到“找不到符号:符号类clazz位置:”
这可能吗?谢谢!
答案 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>();
}