久久精品国产99国产精品,农村大炕弄老女人,人马配速90分钟,香蕉成人伊视频在线观看

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

怎樣理解java泛型中的擦除?泛型是1.5中引入的一個(gè)新概念。它具有高度的安全性和易用性,因?yàn)椴恍枰獜?qiáng)制轉(zhuǎn)換類(lèi)型。因?yàn)榉盒椭辉诰幾g器中實(shí)現(xiàn),并且虛擬機(jī)不識(shí)別泛型類(lèi)項(xiàng),所以有必要?jiǎng)h除虛擬機(jī)中的泛型類(lèi)型。

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

泛型是1.5中引入的一個(gè)新概念。它具有高度的安全性和易用性,因?yàn)椴恍枰獜?qiáng)制轉(zhuǎn)換類(lèi)型。因?yàn)榉盒椭辉诰幾g器中實(shí)現(xiàn),并且虛擬機(jī)不識(shí)別泛型類(lèi)項(xiàng),所以有必要?jiǎng)h除虛擬機(jī)中的泛型類(lèi)型。也就是說(shuō),泛型在編譯階段使用,而泛型在運(yùn)行階段取消,即擦除。擦除是用父類(lèi)替換泛型類(lèi)型。例如,字符串成為對(duì)象。實(shí)際上,仍然使用強(qiáng)制類(lèi)型的轉(zhuǎn)換,但這是一種相對(duì)安全的轉(zhuǎn)換,因?yàn)樵诰幾g階段已經(jīng)確保了數(shù)據(jù)的一致性。

Java為什么要有泛型?

Java中的泛型非常棒。這就是為什么我經(jīng)常討厭Java的原因之一。

讓我們先談?wù)劮盒偷闹饕δ埽?/p>

1。加強(qiáng)類(lèi)型安全。例如,如果定義了一個(gè)列表,那么只有string可以存儲(chǔ)在其中,其他類(lèi)型(從string派生的類(lèi)型除外)是不允許的。類(lèi)型安全應(yīng)該反映在編譯時(shí)和運(yùn)行時(shí)。

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

讓我們來(lái)談?wù)凧ava泛型的奇妙之處:

1。Java泛型實(shí)現(xiàn)的原理稱(chēng)為類(lèi)型擦除。無(wú)論代碼中如何定義泛型,它們?cè)诰幾g后都會(huì)成為對(duì)象,因此在運(yùn)行時(shí)無(wú)法實(shí)現(xiàn)類(lèi)型安全。而且,java編譯器不夠聰明,很容易被欺騙。例如,調(diào)用第三方接口返回list,但實(shí)際得到的值可能與string無(wú)關(guān)。

2. 由于類(lèi)型被刪除,類(lèi)型轉(zhuǎn)換是不可避免的,所以使用泛型和非泛型不會(huì)改變性能。

java怎么獲取一個(gè)泛型方法的真實(shí)泛型類(lèi)型?

在我看來(lái),從方法內(nèi)部獲取泛型方法的真正泛型類(lèi)型是可行的,但通過(guò)方法獲取泛型方法的真正泛型類(lèi)型應(yīng)該是不可能的。

首先,Java中的泛型也稱(chēng)為參數(shù)化類(lèi)型。正確地記住,泛型應(yīng)該是jdk5引入的特性。泛型的目的是使數(shù)據(jù)類(lèi)型能夠作為參數(shù)傳入,以便可以動(dòng)態(tài)更改變量的數(shù)據(jù)類(lèi)型。

那么什么是通用方法?泛型類(lèi)型是在方法上聲明的。只有在調(diào)用方法時(shí)才會(huì)傳入實(shí)類(lèi)型。如果在方法中得到它,可以直接調(diào)用泛型對(duì)象的getClass方法。但是如果你想通過(guò)一個(gè)方法得到一個(gè)泛型方法的真正類(lèi)型,我不認(rèn)為它可以實(shí)現(xiàn)。因?yàn)椴徽{(diào)用方法時(shí),不會(huì)輸入實(shí)數(shù)據(jù)類(lèi)型,因此根本無(wú)法獲取泛型對(duì)應(yīng)的實(shí)類(lèi)型。

所以我將討論如何在泛型方法中獲得泛型的真實(shí)類(lèi)型。

舊規(guī)則,讓我們編寫(xiě)一個(gè)代碼來(lái)解釋。泛型方法的示例如下圖所示:

在上圖中,我聲明了一個(gè)泛型方法:findfirst,用于獲取數(shù)組的第一個(gè)元素。

運(yùn)行結(jié)果如下:

以上是我的答案。我希望它能幫助你

主站蜘蛛池模板: 商水县| 东乡| 霍林郭勒市| 新民市| 三门县| 上思县| 定远县| 包头市| 拜泉县| 阿克| 沽源县| 咸宁市| 精河县| 垦利县| 株洲市| 永城市| 清远市| 合肥市| 新建县| 上林县| 安国市| 华阴市| 廉江市| 合川市| 苏尼特左旗| 民和| 怀集县| 淮滨县| 长武县| 城市| 穆棱市| 广德县| 甘德县| 南昌市| 丰县| 榆中县| 五华县| 大同县| 浪卡子县| 绥德县| 阜新市|