Java中泛型T和Class<T>以及Class<?>的理解(轉)
註意:class是java的關鍵字, 在聲明Java類時使用;
Class類的實例表示Java應用運行時的類(class ans enum)或接口(interface and annotation)(每個Java類運行時都在JVM裏表現為一個Class對象,可通過類名.class,類型.getClass(),Class.forName("類名")等方法獲取Class對象)。數組同樣也被映射為為Class對象的一個類,所有具有相同元素類型和維數的數組都共享該Class對象。基本類型boolean,byte,char,short,int,long,float,double和關鍵字void同樣表現為Class對象。
T bean ;
Class<T> bean;
Class<?> bean;
單獨的T代表一個類型,而Class<T>和Class<?>代表這個類型所對應的類
Class<T>在實例化的時候,T要替換成具體類
Class<?>它是個通配泛型,?可以代表任何類型
<? extends T>受限統配,表示T的一個未知子類。
<? super T>下限統配,表示T的一個未知父類。
public T find(Class<T> clazz, int id);
根據類來反射生成一個實例,而單獨用T沒法做到。
Object類中包含一個方法名叫getClass,利用這個方法就可以獲得一個實例的類型類。類型類指的是代表一個類型的類,因為一切皆是對象,類型也不例外,在Java使用類型類來表示一個類型。所有的類型類都是Class類的實例。getClass()會看到返回Class<?>。
JDK中,普通的Class.newInstance()方法的定義返回Object,要將該返回類型強制轉換為另一種類型;
但是使用泛型的Class<T>,Class.newInstance()方法具有一個特定的返回類型;
參考:
http://blog.csdn.net/witewater/article/details/53462385(以上內容轉自此篇文章)
https://www.cnblogs.com/sprinng/p/5641209.html
Java中泛型T和Class<T>以及Class<?>的理解(轉)