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

我知道这将是今天 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(); 


九州编程
浏览 84回答 2
2回答

梵蒂冈之花

collection.add(()->5);是一个语法糖:collection.add(new Scoreable() {&nbsp; @Override&nbsp; int getScore() {&nbsp; &nbsp; return 5;&nbsp; }});由于 Scoreable 只有一个方法,因此它符合 a 的资格@FunctionalInterface,并且可以在 lambda 表达式中使用,而不是在匿名类中使用

拉丁的传说

不知道 Scoreable 是什么,我假设它是一个带有一种方法的接口(该方法的名称无关紧要),该方法不接受任何参数并返回一个整数。编译器将其解释为函数式接口(因为它满足函数式接口的所有要求),并且()->5是始终返回 5 的无参数方法的 lambda 表达式。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java