如何获取java类泛型的声明,需要java反射知识,知道的进来看看吧

2024-12-22 16:31:15
推荐回答(2个)
回答1:

package test;

class A{
A(T t){
Class var = t.getClass();
System.out.println(var);
}
}
class B extends A{

B(Integer t) {
super(t);
}

}
public class XL{

XL(){
B b = new B(5);
System.out.println(b); }
public static void main(String[] args) {
new XL();
}
}

class java.lang.Integer

感觉没这么玩的吧?既然是泛类型,你的实现中就不应该跟类型绑定

不然还不如不使用范类型。使用泛类型本意上就是为了与类型脱离

如果只是几个可预知类型的话,还硬要使用泛类型,可以考虑在父类型中
if(t instanceof T1){
...
}else if(t instanceof T2){
...
}else ...

不过这么做的话,你可得考虑清楚instance是啥意思,在这里栽跟头也是常见的

回答2:

你在CLASS里设个OBJECT静态变量,在CLASS创建的时候将它赋值为T。然后再构造函数里判断这个静态变量是否属于INTEGER类型就OK了。