泛型方法

     泛型是什麼意思在這就很少說了,而Java中泛型類的定義也比較簡單,例如:public class Test<T>{}。這樣就定義了一個泛型類Test,在實例化該類時,必須指明泛型T的具體類型,例如:Test<Object> t = new Test<Object>();,指明泛型T的類型爲Object。spa

       可是Java中的泛型方法就比較複雜了。orm

       泛型類,是在實例化類的時候指明泛型的具體類型;泛型方法,是在調用方法的時候指明泛型的具體類型。對象

說明一下,定義泛型方法時,必須在返回值前邊加一個<T>,來聲明這是一個泛型方法,持有一個泛型T,而後才能夠用泛型T做爲方法的返回值。it

       Class<T>的做用就是指明泛型的具體類型,而Class<T>類型的變量c,能夠用來建立泛型類的對象。class

       爲何要用變量c來建立對象呢?既然是泛型方法,就表明着咱們不知道具體的類型是什麼,也不知道構造方法如何,所以沒有辦法去new一個對象,但能夠利用變量c的newInstance方法去建立對象,也就是利用反射建立對象。泛型

       泛型方法要求的參數是Class<T>類型,而Class.forName()方法的返回值也是Class<T>,所以能夠用Class.forName()做爲參數。其中,forName()方法中的參數是何種類型,返回的Class<T>就是何種類型。在本例中,forName()方法中傳入的是User類的完整路徑,所以返回的是Class<User>類型的對象,所以調用泛型方法時,變量c的類型就是Class<User>,所以泛型方法中的泛型T就被指明爲User,所以變量obj的類型爲User。變量

       固然,泛型方法不是僅僅能夠有一個參數Class<T>,能夠根據須要添加其餘參數。反射

       爲何要使用泛型方法呢?由於泛型類要在實例化的時候就指明類型,若是想換一種類型,不得不從新new一次,可能不夠靈活;而泛型方法能夠在調用的時候指明類型,更加靈活。方法

相關文章
相關標籤/搜索