黑马程序员技术交流社区
标题:
java中获取泛型的实际类型,请问如何做? (请不要简单的说...
[打印本页]
作者:
丶小天
时间:
2014-2-20 12:12
标题:
java中获取泛型的实际类型,请问如何做? (请不要简单的说...
class B{...}
class C{...}
class A<T> {
T tt;
public void showType(){
// 这里获取到T的实际类型
}
public static void main(String args[]){
A<B> a1 = new A<B>();
a1.showType(); // 这里打印出T(或者tt)的类型是B
A<C> a2 = new A<C>();
a2.showType(); // 这里打印出T(或者tt)的类型是C
}
};
复制代码
作者:
汪平乐
时间:
2014-2-21 10:41
看了你的代码,因为你的T tt属于类属性,只是进行了声明,没有进行赋值操作,返回的是null,只要对tt进行赋值操作就可以了。如: void setT(T tt){
this.tt = tt;
}
showType(){
SOP(tt);
}
你给出的题目我目前只能这样,有原来的题目吗?
作者:
夏新¤Amoi
时间:
2014-2-21 12:23
T.getClass().getName();
这是别人说的,我也不是很懂的。
作者:
汪平乐
时间:
2014-2-21 13:13
夏新¤Amoi 发表于 2014-2-21 12:23
T.getClass().getName();
这是别人说的,我也不是很懂的。
查了资料,下面是完整的代码:
class Gen<T> {
private T ob; //定义泛型成员变量
public Gen(T ob) {
this.ob = ob;
}
public T getOb() {
return ob;
}
public void setOb(T ob) {
this.ob = ob;
}
public void showType() {
System.out.println("T的实际类型是: " + ob.getClass().getName()); //利用反射获取}
}
可以看出,T声明后是要赋值的,不然会报NullPointerExecption的...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2