遍歷數(shù)組的三種方法 java怎么獲取一個泛型方法的真實泛型類型?
java怎么獲取一個泛型方法的真實泛型類型?我認(rèn)為,如果在方法內(nèi)部獲取還是可行的,但如果希望通過一個方法來獲取一個泛型方法的真實泛型類型,那應(yīng)該是實現(xiàn)不了。首先Java中的泛型,也叫參數(shù)化類型,沒記錯
java怎么獲取一個泛型方法的真實泛型類型?
我認(rèn)為,如果在方法內(nèi)部獲取還是可行的,但如果希望通過一個方法來獲取一個泛型方法的真實泛型類型,那應(yīng)該是實現(xiàn)不了。
首先Java中的泛型,也叫參數(shù)化類型,沒記錯泛型應(yīng)該是jdk5引入的特性,泛型目的在于使數(shù)據(jù)類型可以作為參數(shù)傳入,從而可以動態(tài)的改變某個變量的數(shù)據(jù)類型。
那么什么是泛型方法呢?就是泛型類型是聲明在方法上,只有當(dāng)調(diào)用該方法時才會將真實類型傳入。如果你是在方法內(nèi)部獲取那直接調(diào)用泛型對象的getClass方法即可。但如果希望通過一方法來獲取某個泛型方法的真實類型,我認(rèn)為沒法實現(xiàn)。因為未調(diào)用方法時,真實的數(shù)據(jù)類型還未入,所以根本無法取到泛型對應(yīng)的真實類型。
所以下面我就說說如何在泛型方法內(nèi)部獲取泛型的真實類型。
老規(guī)矩,咱寫段代碼再來解釋。泛型方法的例子如下圖:
在上圖中,我聲明了一個泛型方法:findFirst, 用于獲取數(shù)組的第一個元素。
運行結(jié)果如下圖:
以上就是我的答案,希望對你有所幫助吧
究竟是.Net好還是Java好,歡迎大家發(fā)言,暢所欲言?
我選dotNet,因為有宇宙第一ide——vs2019 加持,不接受反駁。
Java為什么不能實現(xiàn)真正泛型?
一句話回答:Java一言九鼎!
Java在發(fā)布之初,就將二進(jìn)制兼容這個承諾寫入了《Java虛擬機(jī)規(guī)范》中,為了兼容Java1.5之前的版本最終選擇了此方案。
雖然兼容的方案不止是擦除這一條路,但是這個承諾確實是導(dǎo)致其沒有采用類似C#那種真泛型的方案的最重要的原因。