为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 55 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信