我知道这将是今天 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
提交
取消