java java怎么獲取一個(gè)泛型方法的真實(shí)泛型類型?
java怎么獲取一個(gè)泛型方法的真實(shí)泛型類型?在我看來(lái),從一個(gè)方法中獲取泛型方法的真正泛型類型是可行的,但是通過(guò)一個(gè)方法獲取泛型方法的真正泛型類型應(yīng)該是不可能的。首先,Java中的泛型也稱為參數(shù)化類型。
java怎么獲取一個(gè)泛型方法的真實(shí)泛型類型?
在我看來(lái),從一個(gè)方法中獲取泛型方法的真正泛型類型是可行的,但是通過(guò)一個(gè)方法獲取泛型方法的真正泛型類型應(yīng)該是不可能的。
首先,Java中的泛型也稱為參數(shù)化類型。正確地記住,泛型應(yīng)該是jdk5引入的特性。泛型的目的是使數(shù)據(jù)類型能夠作為參數(shù)傳入,以便可以動(dòng)態(tài)更改變量的數(shù)據(jù)類型。
那么什么是通用方法?泛型類型是在方法上聲明的。只有在調(diào)用方法時(shí)才會(huì)傳入實(shí)類型。如果在方法中得到它,可以直接調(diào)用泛型對(duì)象的getClass方法。但是如果你想通過(guò)一個(gè)方法得到一個(gè)泛型方法的真正類型,我不認(rèn)為它可以實(shí)現(xiàn)。因?yàn)椴徽{(diào)用方法時(shí),不會(huì)輸入實(shí)數(shù)據(jù)類型,因此根本無(wú)法獲取泛型對(duì)應(yīng)的實(shí)類型。
所以我將討論如何在泛型方法中獲得泛型的真實(shí)類型。
舊規(guī)則,讓我們編寫(xiě)一個(gè)代碼來(lái)解釋。泛型方法的示例如下圖所示:
在上圖中,我聲明了一個(gè)泛型方法:findfirst,用于獲取數(shù)組的第一個(gè)元素。
運(yùn)行結(jié)果如下:
以上是我的答案,希望能對(duì)您有所幫助
往Java泛型類中方法傳一個(gè)對(duì)象引用的參數(shù),但是該方法的參數(shù)為什么不能調(diào)用該對(duì)象的方法?
有可能您在定義泛型時(shí),定義了<T>。這樣,您就不知道T是哪一種類型了,它將默認(rèn)為object
如果您通過(guò)了一個(gè)測(cè)試對(duì)象,則該對(duì)象中有一個(gè)測(cè)試方法,您想調(diào)用該方法,但該對(duì)象中沒(méi)有測(cè)試方法如果該方法正確,則會(huì)報(bào)錯(cuò)。
在定義泛型時(shí),可以將其定義為<T extensions test>,這樣,只要傳入test的子類對(duì)象,就可以調(diào)用test方法。