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

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

collection.add(()->7); 中 ()-> 的功能是什么?

collection.add(()->7); 中 ()-> 的功能是什么?

九州編程 2023-09-13 10:53:01
我知道這將是今天 Stackoverflow 上的蹩腳問題......但我仍然想在 java 中找到以下代碼片段的功能理想情況下,我們應該將“Scoreable Scoreable”對象傳遞給 collection.add 但 this ()->5 是什么?以及如何將 int 值轉換為 Scoreable 類型public class ScoreCollectionTest {    public void addTwoNumbersForMean() {        ScoreCollection collection = new ScoreCollection();        collection.add(()->5);        collection.add(()->7);    }}public class ScoreCollection {    private List<Scoreable> scores = new ArrayList<>();    public void add(Scoreable scoreable) {        scores.add(scoreable);    }    public int arithmeticMean() {        int total = scores.stream().mapToInt(Scoreable::getScore).sum();        return total / scores.size();    }}這是Scoreable界面public interface Scoreable {     int getScore(); } 
查看完整描述

2 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

collection.add(()->5);是一個語法糖:


collection.add(new Scoreable() {


  @Override

  int getScore() {

    return 5;

  }

});

由于 Scoreable 只有一個方法,因此它符合 a 的資格@FunctionalInterface,并且可以在 lambda 表達式中使用,而不是在匿名類中使用


查看完整回答
反對 回復 2023-09-13
?
拉丁的傳說

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

不知道 Scoreable 是什么,我假設它是一個帶有一種方法的接口(該方法的名稱無關緊要),該方法不接受任何參數并返回一個整數。

編譯器將其解釋為函數式接口(因為它滿足函數式接口的所有要求),并且()->5是始終返回 5 的無參數方法的 lambda 表達式。


查看完整回答
反對 回復 2023-09-13
  • 2 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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