說明一下,定義泛型方法時,必須在返回值前邊加乙個,來宣告這是乙個泛型方法,持有乙個泛型t,然後才可以用泛型t作為方法的返回值。
class的作用就是指明泛型的具體型別,而class型別的變數c,可以用來建立泛型類的物件。
為什麼要用變數c來建立物件呢?既然是泛型方法,就代表著我們不知道具體的型別是什麼,也不知道構造方法如何,因此沒有辦法去new乙個物件,但可以利用變數c的newinstance方法去建立物件,也就是利用反射建立物件。
泛型方法要求的引數是class型別,而class.forname()方法的返回值也是class,因此可以用class.forname()作為引數。其中,forname()方法中的引數是何種型別,返回的class就是何種型別。在本例中,forname()方法中傳入的是user類的完整路徑,因此返回的是class型別的物件,因此呼叫泛型方法時,變數c的型別就是class,因此泛型方法中的泛型t就被指明為user,因此變數obj的型別為user。
當然,泛型方法不是僅僅可以有乙個引數class,可以根據需要新增其他引數。
為什麼要使用泛型方法呢?因為泛型類要在例項化的時候就指明型別,如果想換一種型別,不得不重新new一次,可能不夠靈活;而泛型方法可以在呼叫的時候指明型別,更加靈活。
希望可以幫到大家,謝謝
鏡花水月的部落格
以非泛型方式呼叫泛型方法
doctype html public wcdtd xhtml stricten httpwwwworgtrxhtmldtdxhtml strictdtd 通過泛型方法定義具有特定型別意義的方法是常用的手段。但在某些特定情況下,例如在一些通用的框架中,直到執行時才能確定泛型型別引數,就必須通過非泛型...
泛型類,泛型方法,泛型委託的定義方法
今天看書,學習到了泛型類,泛型方法及泛型委託,做乙個簡單的總結,僅涉及泛型類,泛型方法及泛型委託的定義方法。1.泛型類 泛型類的定義與普通類的定義類似,只是增加了泛型型別 的宣告。泛型型別可以作為類中成員變數的型別,也可以作為成員方法的引數型別或方法返回值型別。class examplegeneri...
泛型討論 泛型方法
泛型不經可以用在整個類上,同樣也可以用在雷中包含引數化的方法,而這個方法所在的類可以是泛型,也可以不是泛型,也就是說,是否擁有泛型方法,與其所在的類是否是泛型沒有關係。乙個基本的原則,優先使用泛型方法,然後才是泛型類,另外對於static方法而言,無法訪問泛型類的型別引數,所以,如果static方法...