gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:26:18 25 4
gpt4 key购买 nike

我正在尝试用 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 - 有没有办法在 Java 中找到模板(通用)参数的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1353901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com