有没有办法找到Java中模板(通用)参数的类型?

我正在尝试在Java中执行以下操作:

public static <T> T foo() {

return (T) bar(T);

}

public static Object bar(Class<?> klaz) {

return klaz.newInstance();

}

但是代码无法编译,因为我不能用 T 代替 Class <?>

在具体的课程中,我可以这样称呼 bar

bar(ConcreteClass.class);

但是对于 T而言 ,这是行不通的。即没有 T.class 这样的东西 __

在C#中, typeof 适用于具体类型和模板类型。因此,对bar的调用将是:

bar(typeof(T));

但是我无法在Java中找到任何类似的东西。

我是否缺少某些东西,或者Java是否无法获取模板参数的类型?如果Java没有该功能,是否有任何解决方法?

回答:

无法获取类型。Java的泛型使用类型擦除,因此,即使Java本身也不知道运行时T是什么。

至于解决方法:您可以将foo定义为采用类型的参数,Class<T>然后使用该参数。

以上是 有没有办法找到Java中模板(通用)参数的类型? 的全部内容, 来源链接: utcz.com/qa/399456.html

回到顶部