Java中泛型T和Class 以及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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM