java泛型是什么 怎樣理解java泛型中的擦除?
怎樣理解java泛型中的擦除?由于引入了類型轉(zhuǎn)換的新概念,并且易于使用,因此使用起來非常方便。因為泛型只在編譯器中實現(xiàn),并且虛擬機不識別泛型類項,所以有必要刪除虛擬機中的泛型類型。也就是說,泛型在編譯
怎樣理解java泛型中的擦除?
由于引入了類型轉(zhuǎn)換的新概念,并且易于使用,因此使用起來非常方便。因為泛型只在編譯器中實現(xiàn),并且虛擬機不識別泛型類項,所以有必要刪除虛擬機中的泛型類型。也就是說,泛型在編譯階段使用,而泛型在運行階段取消,即擦除。擦除是用父類替換泛型類型。例如,字符串成為對象。實際上,仍然使用強制類型的轉(zhuǎn)換,但這是一種相對安全的轉(zhuǎn)換,因為在編譯階段已經(jīng)確保了數(shù)據(jù)的一致性。
究竟是.Net好還是Java好,歡迎大家發(fā)言,暢所欲言?
我選擇dotnet,因為宇宙中有第一個ide-vs2019祝福,不接受駁斥。
Java為什么要有泛型?
Java中的泛型非常棒。這就是為什么我經(jīng)常討厭Java的原因之一。
讓我們先談?wù)劮盒偷闹饕δ埽?/p>
1。加強類型安全。例如,如果定義了一個列表
2. 提高性能,減少類型轉(zhuǎn)換和裝箱次數(shù)。
讓我們來談?wù)凧ava泛型的奇妙之處:
1。Java泛型實現(xiàn)的原理稱為類型擦除。無論代碼中如何定義泛型,它們在編譯后都會成為對象,因此在運行時無法實現(xiàn)類型安全。而且,java編譯器不夠聰明,很容易被欺騙。例如,調(diào)用第三方接口返回list
2. 由于類型被刪除,類型轉(zhuǎn)換是不可避免的,所以使用泛型和非泛型不會改變性能。