卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

怎么消除眼袋 怎樣理解java泛型中的擦除?

怎樣理解java泛型中的擦除?泛型是1.5中引入的一個新的概念,由于不用進行強制轉(zhuǎn)換類型了,所以具有較高的安全性和易用性。因為泛型其實只是在編譯器中實現(xiàn)的而虛擬機并不認識泛型類項,所以要在虛擬機中將泛

怎樣理解java泛型中的擦除?

泛型是1.5中引入的一個新的概念,由于不用進行強制轉(zhuǎn)換類型了,所以具有較高的安全性和易用性。因為泛型其實只是在編譯器中實現(xiàn)的而虛擬機并不認識泛型類項,所以要在虛擬機中將泛型類型進行擦除。也就是說,在編譯階段使用泛型,運行階段取消泛型,即擦除。擦除是將泛型類型以其父類代替,如String 變成了Object等。其實在使用的時候還是進行帶強制類型的轉(zhuǎn)化,只不過這是比較安全的轉(zhuǎn)換,因為在編譯階段已經(jīng)確保了數(shù)據(jù)的一致性。

Java為什么要有泛型?

java里的泛型是奇葩的存在。這也是我經(jīng)常懟java的一個原因。

先說下泛型的主要作用:

1,強化類型安全,比如定義了一個List<String>,那么里面只能存放String,不允許存放其他類型(派生自String的除外)。類型安全應該在編譯和運行時都能體現(xiàn)。

2,提高性能,減少類型轉(zhuǎn)換和裝箱拆箱次數(shù)。

再說下java泛型奇葩之處:

1,java泛型實現(xiàn)的原理叫類型擦除,不管代碼中怎么定義泛型,編譯后都變成object, 因此不能實現(xiàn)運行時的類型安全。 而且java編譯器不夠聰明,可以很容易騙過去。 舉個例子,你調(diào)用了第三方的接口返回List<String>,但實際拿到的值里面可能跟String沒有半毛錢關系。

2,既然類型被擦除,那么類型轉(zhuǎn)換就不可避免了,因此使用泛型和非泛型在性能上沒有任何變化。