java - Java 中的 Lambda 表达式返回类型

标签 java lambda java-8

<分区>

我正在学习 Java 中的 Lambda,并试图理解它。例如我有以下代码:

@FunctionalInterface
interface Square 
{ 
    int calculate(int x); 
} 

class Test 
{ 
    public static void main(String args[]) 
    { 
        int a = 5; 

        Square s = (int x) -> x*x; 

        int ans = s.calculate(a); 
        System.out.println(ans); 
    } 
} 

我不明白这个语句 Square s = (int x) -> x*x; 我看到 sSquare 类型的引用变量。但是我不明白这个 (int x) -> x*x 到底是什么。这是方法定义吗?这个方法的返回类型是什么?我认为应该是int,因为calculate方法的返回类型是int。任何反馈将不胜感激。

最佳答案

你的 lambda 表达式可以用匿名类代替:

Square s = new Square() {
    @Override
    public int calculate(int x) {
        return x * x;
    }
};

所以 (int x) -> x*x 只是 calculate 方法的实现,它接受 int 参数并返回 int 值。顺便说一句,没有必要指定参数类型。你可以这样做:

Square s = x -> x*x;

现在您有了 Square 类型的对象,您可以调用之前在 lambda 表达式中定义的 calculate 方法:

int squared = s.calculate(5);

关于java - Java 中的 Lambda 表达式返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54793417/

相关文章:

java - 如何使用 RestTemplate 在 Java 中仅解析 Web JSON 的一部分?

java - 寻找有关如何在特定测试中提高常规性能的想法

java - 映射<S,S> 到列表<S>

java - IdeaUIDesigner 中的 Lambda 表达式和 Java 1.8

java - 按公共(public)键对对象进行分组

java - 实时应用程序中的 JRuby、大型数组和性能问题

c# - 用于检索可以为空的属性的 Lambda 表达式

java: NullPointerExc 为什么当直接在其上调用 lambda 表达式时,List 包含添加的对象。当 lambda 是一个方法时则不然

c++ - 在 C++ 中避免 lambda 拷贝

java - 如何汇总对象列表的各个字段并以单个对象的形式返回结果