gpt4 book ai didi

java - 获取泛型类型的类的类型?

转载 作者:行者123 更新时间:2023-11-30 05:56:57 30 4
gpt4 key购买 nike

一个类,其方法声明如下:

public class A{
public <T> T test(java.lang.Class<T> classOfT)
}

通常可以像这样针对对象调用它:

A a = new A()
String s = "test";
a.test(String.class); //I wrote this as s.class at first,which is wrong.Thanks Nick.

现在我想概括传递给它的对象,所以我声明一个这样的类:

public class B <T>{
private A a = new A();
private T obj = null;
T test(){return a.test(obj.getClass()); }
}

但是代码无法编译。我想知道是否可以实现我的目标?

提前感谢 Java 专家;)

最佳答案

T obj = ...;
obj.getClass()

最后一行返回Class<? extends T> --但是T是无界的,所以它基本上受 Object 的限制。 ,这意味着它返回 Class<? extends Object> ,与 Class<?> 相同.

所以这样做:

T test () { return a.test(obj.getClass()); }

实际上会调用a.test参数类型为Class<?> ,它返回 Object ,而不是 T .

只需将参数转换为 Class<T>或返回类型 T它应该可以工作——尽管我还不明白为什么你需要这样的东西。另外,原帖中有一个奇怪的错误:

 String s = "test";
a.test(s.class);

正在做"test".class是错误的——应该是String.class .

关于java - 获取泛型类型的类的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536024/

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