Java 如何将类的实例用作泛型类型?

Java 如何将类的实例用作泛型类型?,java,class,generics,reflection,Java,Class,Generics,Reflection,我想在java 8中执行类似的操作: public void example(Class clazz) { MyClass<clazz> myObj = new MyClass<clazz>(); } 但我发现找不到symbol:symbol类clazz位置: 这可能吗?谢谢 您可以这样做: public void example() { MyClass<Class> myObj = new MyClass<Class>(); }

我想在java 8中执行类似的操作:

public void example(Class clazz) {
    MyClass<clazz> myObj = new MyClass<clazz>();
}
但我发现找不到symbol:symbol类clazz位置:

这可能吗?谢谢

您可以这样做:

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

不能将变量放入

泛型类型参数必须是类型名称,而不是变量名称

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

public <T> void example(Class<T> clazz) {
    MyClass<T> myObj = new MyClass<T>();
}
通常使用单大写字母作为类型变量,例如T,以便于将其与普通变量(例如clazz)区分开来。

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

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

您只能将类型放入其中。你不能在这里输入变量名。clazz类的作用是什么?@Andreytukin这是在运行时访问类型的标准方法。你可以从clazz和do那里得到构造函数newInstance@rgettman好吧,我想可能是这样的。谢谢@anonymouse您可以从clazz和do newInstance获得构造函数。如果您正试图这样做,则最好通过供应商。