亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在方法引用(整數的toString)上修復歧義類型?

如何在方法引用(整數的toString)上修復歧義類型?

繁花不似錦 2019-11-04 14:32:44
這樣做時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值。


查看完整回答
反對 回復 2019-11-04
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

由于Integer.toString()overrides Object.toString(),在這種特殊情況下,您可以按以下方式對其進行修復:


Stream.of(1, 32, 12, 15, 23).map(Object::toString);


查看完整回答
反對 回復 2019-11-04
?
夢里花落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)。


查看完整回答
反對 回復 2019-11-04
  • 3 回答
  • 0 關注
  • 409 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號