這樣做時Stream.of(1, 32, 12, 15, 23).map(Integer::toString);我收到一個模棱兩可的類型錯誤??梢岳斫獾氖?,編譯器無法確定我是指toString(int)還是toString()from Integer。當不使用方法引用時,我可能通過顯式轉換擺脫了困境,或者長時間寫了泛型,但是如何讓編譯器知道我的意思呢?我可以使用什么語法(如果有)來明確表達?
3 回答
Helenr
TA貢獻1780條經驗 獲得超4個贊
沒有方法可以使方法引用明確。簡而言之,方法引用是僅明確的方法引用才支持的功能。因此,您有兩種解決方案:
使用lambda表達式:
Stream.of(1, 32, 12, 15, 23).map(i->Integer.toString(i));
(至少在我看來更是如此)int當源int僅由原始值組成時,請使用原始值流:
IntStream.of(1, 32, 12, 15, 23).mapToObj(Integer::toString);
這將使用靜態Integer.toString(int)方法來使用int值。
胡說叔叔
TA貢獻1804條經驗 獲得超8個贊
由于Integer.toString()overrides Object.toString(),在這種特殊情況下,您可以按以下方式對其進行修復:
Stream.of(1, 32, 12, 15, 23).map(Object::toString);
夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
使用方法引用的主要選項是:
Stream.of(1, 32, 12, 15, 23).map(String::valueOf);
IntStream.of(1, 32, 12, 15, 23).mapToObj(Integer::toString);
您當前的版本可能是i -> i.toString()或i -> Integer.toString(i)。
添加回答
舉報
0/150
提交
取消
