我知道這將是今天 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 表達式中使用,而不是在匿名類中使用

拉丁的傳說
TA貢獻1789條經驗 獲得超8個贊
不知道 Scoreable 是什么,我假設它是一個帶有一種方法的接口(該方法的名稱無關緊要),該方法不接受任何參數并返回一個整數。
編譯器將其解釋為函數式接口(因為它滿足函數式接口的所有要求),并且()->5
是始終返回 5 的無參數方法的 lambda 表達式。
添加回答
舉報
0/150
提交
取消