如何获得泛型的类 [英] How to get generic's class

查看:84
本文介绍了如何获得泛型的类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 班级模特< T> {

private T t;

.....


private void someMethod(){
// now t is null
Class c = t。的getClass();
}

.....

}

当然它会抛出NPE。

  Class c = t.getClass(); 

如果我的实例为null,应该使用什么语法来获得T的类?
是否可能?

解决方案



有以下解决方法:

  class Model< T> {

private T t;
私人课程< T>标签;

public Model(Class< T>标签){
this.tag = tag;
}

private void someMethod(){
//使用标记
}
}


Class Model<T>{

   private T t;

   .....


   private void someMethod(){
       //now t is null
       Class c = t.getClass();
   } 

   .....

}

Of course it throws NPE.

Class c = t.getClass();

What syntax should i use to get class of T if my instance is null? Is it possible?

解决方案

It's not possible due to type erasure.

There is the following workaround:

class Model<T> { 

    private T t; 
    private Class<T> tag;

    public Model(Class<T> tag) {
       this.tag = tag;
    }

    private void someMethod(){ 
       // use tag
    }  
} 

这篇关于如何获得泛型的类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆