美文网首页
Lambda表达式1

Lambda表达式1

作者: ssttIsme | 来源:发表于2019-03-31 16:38 被阅读0次

Lambda表达式是Java 8提供的新特性之一,是功能性接口的简单实现。
Lambda表达式特别适合语句就是一行的情况

功能性接口

只有一个方法的接口称之为功能性接口
如:

interface Car{
    int test(int a,int b);
}

完整代码

public class TestLambda {
    public static void main(String[] args) {
        //实现功能性接口
        Car car=new Car() {
            @Override
            public int test(int a, int b) {
                return a+b;
            }
        };
        System.out.println(car.test(1, 2));
    }
}
//功能性接口
interface Car{
    int test(int a,int b);
}

运行结果

3

利用Lambda实现功能性接口

语法

Car car=(int a,int b)->{return a+b;};

基本语法

()->{}

如果Java编译器能猜到参数类型,则类型可以省略

Car car2=(a,b)->{return a+b;};

如果{}中只有一行语句则{}可以省略,如果是return语句,则一起省略return

Car car3=(a,b)->a+b;

如果只有一个参数则()可以省略

Car car4=a->a+3;

最简单的例子

package lambdaDemo;

public class TestLambda {
    public static void main(String[] args) {
        //实现功能性接口
        Car car=(int a,int b)->{return a+b;};
        System.out.println(car.test(1, 2));
    }
}
//功能性接口
interface Car{
    int test(int a,int b);
}

运行结果

3

稍微复杂一点

package lambdaDemo;


public class TestLambda {
    public static void main(String[] args) {
        //Lambda实现功能性接口
        Car car=(int a,int b)->{return a+b;};
        System.out.println(car.test(1, 2));
        //如果Java编译器能猜到参数类型,则类型可以省略
        Car car2=(a,b)->{return a+b;};
        System.out.println(car2.test(1, 2));
        //如果{}中只有一行语句则{}可以省略,如果是return语句,则一起省略return
        Car car3=(a,b)->a+b;
        System.out.println(car3.test(1, 2));
        //如果只有一个参数则()可以省略
        Truck truck=a->a+3;
        System.out.println(truck.test(1));
    }
    
}
//功能性接口
interface Car{
    int test(int a,int b);
}

interface Truck{
    int test(int a);
}

运行结果

3
3
3
4
package lambdaDemo2;

public class TestLambda2 {
    public static void main(String[] args) {
        //使用Lambda作为参数
        test((a,b)->a+b);
        //相当于
        Car car=(a,b)->a+b;
        test(car);
        
        //使用Lambda作为参数
        test(a->a+4);
        //相当于
        Truck truck=a->a+4;
        test(truck);
        
    }
    public static void test(Car car){
        System.out.println("TestLambda.test(Car car)");
        System.out.println(car.test(1, 2));
    }
    public static void test(Truck truck){
        System.out.println("TestLambda.test(Truck truck)");
        System.out.println(truck.test(6));
    }
}
//功能性接口
interface Car{
    int test(int a,int b);
}

interface Truck{
    int test(int a);
}

运行结果

TestLambda.test(Car car)
3
TestLambda.test(Car car)
3
TestLambda.test(Truck truck)
10
TestLambda.test(Truck truck)
10

相关文章

网友评论

      本文标题:Lambda表达式1

      本文链接:https://www.haomeiwen.com/subject/niqubqtx.html