有没有办法找到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