地參 往Java泛型類中方法傳一個(gè)對(duì)象引用的參數(shù),但是該方法的參數(shù)為什么不能調(diào)用該對(duì)象的方法?
往Java泛型類中方法傳一個(gè)對(duì)象引用的參數(shù),但是該方法的參數(shù)為什么不能調(diào)用該對(duì)象的方法?也許當(dāng)你定義泛型時(shí),你定義了<T>。這樣,您就不知道t是哪種類型,它將默認(rèn)為object如果您通過(guò)了一個(gè)
往Java泛型類中方法傳一個(gè)對(duì)象引用的參數(shù),但是該方法的參數(shù)為什么不能調(diào)用該對(duì)象的方法?
也許當(dāng)你定義泛型時(shí),你定義了<T>。這樣,您就不知道t是哪種類型,它將默認(rèn)為object
如果您通過(guò)了一個(gè)測(cè)試對(duì)象,則該對(duì)象中有一個(gè)測(cè)試方法,您想調(diào)用該方法,但該對(duì)象中沒(méi)有該方法,則會(huì)報(bào)告一個(gè)錯(cuò)誤。
在定義泛型時(shí),可以將其定義為<T extensions test>,這樣,只要傳入test的子類對(duì)象,就可以調(diào)用test方法。
Java為什么要有泛型?
Java中的泛型非常棒。這就是為什么我經(jīng)常討厭Java的原因之一。
讓我們先談?wù)劮盒偷闹饕δ埽?/p>
1。加強(qiáng)類型安全。例如,如果定義了一個(gè)列表
2. 提高性能,減少類型轉(zhuǎn)換和裝箱次數(shù)。
讓我們來(lái)談?wù)凧ava泛型的奇妙之處:
1。Java泛型實(shí)現(xiàn)的原理稱為類型擦除。無(wú)論代碼中如何定義泛型,它們?cè)诰幾g后都會(huì)成為對(duì)象,因此在運(yùn)行時(shí)無(wú)法實(shí)現(xiàn)類型安全。而且,java編譯器不夠聰明,很容易被欺騙。例如,調(diào)用第三方接口返回list
2. 由于類型被刪除,類型轉(zhuǎn)換是不可避免的,所以使用泛型和非泛型不會(huì)改變性能。