在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 返回值類型<U> U

返回值類型<U> U

圖中紅框是什么意思?
<U>是什么意思?
是否可以去掉?
如果可以去掉<U>那么和原來的對(duì)比有什么區(qū)別?

U不已經(jīng)表明了是返回值是U?那么U的前面<U>的作用是什么?第二張圖的T前面并沒有<T>也能表明了返回值是T

clipboard.png

clipboard.png

回答
編輯回答
赱丅呿

二次更新:

<T> 的聲明在這個(gè)類啊,你看這個(gè)類的聲明是不是:

public Something <T> {
    ///
}

類似這種的。

你直接用 U 來標(biāo)識(shí)返回值,JVM 會(huì)去找 U.class 這個(gè)類型,但是很顯然它是不存在的,所以用 <U> 來標(biāo)識(shí)讓虛擬機(jī)等到運(yùn)行這個(gè)方法時(shí)再去看 U 對(duì)應(yīng)的實(shí)際類型。這里涉及到 Java 的泛型擦除問題,可以自行查閱一些文章。


更新:

泛型可以比被理解為"允許此處接受任意類型參數(shù)",但是一般用法是用于要求多處參數(shù)的類型、泛型參數(shù)類型有一定關(guān)聯(lián)。

比如圖片中使用泛型后,identity 則必須與 accumulator 的兩個(gè)輸入?yún)?shù)之一及其返回值為同一類型,同時(shí) combiner 接受的參數(shù)類型也必須與 identity 一致。

eg.
當(dāng) identity 是個(gè) String,則 accumulator 的第一個(gè)參數(shù)和返回值都必須為 String 類型,否則報(bào)錯(cuò)。

這是用 Object 來表示 "允許此處接受任意類型參數(shù)" 時(shí)所達(dá)不到的表達(dá)能力。


百度 "泛型參數(shù)類型" 以獲取更多詳細(xì)內(nèi)容。

2018年7月12日 00:15
編輯回答
孤島

第一個(gè)<U>不能刪除。刪除的話,編譯器會(huì)認(rèn)為你的方法返回一個(gè)名稱為U的類(U.class),會(huì)找不到。
這個(gè)<U>就是用來告訴編譯器,我這里要返回一個(gè)泛型,不用管我

2017年11月8日 06:29
編輯回答
撥弦

第一個(gè)<U>是聲明,表明此類型參數(shù)是此方法獨(dú)有的,后一個(gè)U表明方法返回類型是U


建議題主多去看下相關(guān)基礎(chǔ)書籍,以下截圖截自《core java Ⅰ》中文譯版 第10版
圖片描述
圖片描述

2017年12月8日 23:32