java8-lambda

lambda

  • lambda的实质是对匿名类的简化,但是他有较为苛刻的使用场景
    • 必须是一个函数式接口,抽象类不行
    • 接口中只能有一个未实现的方法,可以有默认方法,静态方法(换句话说必须是函数式接口
  • 在传统的匿名类中,如果匿名类访问类外的变量,这个变量必须是一个final变量或者不被修改的变量。同样的,lambda表达式也有同样的要求
public class Java8Tester {
    public static void main(String args[]){
        Java8Tester tester = new Java8Tester();
        //简化书写
        MathOperation addition1 = new MathOperation() {
            @Override
            public int operation(int a, int b) {
                return a + b;
            }
        };
        MathOperation addition = (int a, int b) -> a + b;

        int a1=10;
        TestLambda lambda=()-> System.out.println(a1);
        lambda.print();
//        a1=21; //打开报错,a1具有隐形的final属性

        out.println("10 + 5 = " + tester.operate(10, 5, addition));
        out.println("10 + 5 = " + tester.operate(10, 5, addition1));
    }

    interface MathOperation {
        int operation(int a, int b);
        default int print(int a,int b){
            return 1;
        }
        static void print(){}
    }

    interface TestLambda{
        void print();
    }

    private int operate(int a, int b, MathOperation mathOperation){
        return mathOperation.operation(a, b);
    }
}

lambda表达式的意义

  • Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
  • 简化书写

参考:http://www.runoob.com/java/java8-lambda-expressions.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值