A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class B{...}
  2. class C{...}

  3. class A<T> {

  4.         T tt;

  5.         public void showType(){
  6.                 // 这里获取到T的实际类型
  7.         }

  8.         public static void main(String args[]){
  9.                 A<B> a1 = new A<B>();
  10.                 a1.showType();  // 这里打印出T(或者tt)的类型是B
  11.                 A<C> a2 = new A<C>();
  12.                 a2.showType();  // 这里打印出T(或者tt)的类型是C
  13.         }
  14. };
复制代码

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

3 个回复

倒序浏览
看了你的代码,因为你的T tt属于类属性,只是进行了声明,没有进行赋值操作,返回的是null,只要对tt进行赋值操作就可以了。如:   void  setT(T tt){
                                     this.tt = tt;
                             }
                                    showType(){
                                         SOP(tt);
                                    }
你给出的题目我目前只能这样,有原来的题目吗?
   

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
T.getClass().getName();
这是别人说的,我也不是很懂的。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
夏新¤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的...

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马