Lambda表达式

Lambda 表达式

优点:

  1. 避免匿名内部类定义过多;

  2. 让代码看起来整洁;

  3. 去掉一堆无意义的代码,只留下核心的逻辑。

函数式接口定义:

任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。通常与lambda表达式一起出现。

Public interface Runnable {
    public abstract void run();   
}

对于函数式接口,我们就可以通过lambda表达式来创建该接口的对象。

匿名内部类,没有类的名称,必须借助接口或父类

总结:

lambda表达式,在只有一行代码的情况下,才能简化为一行,如果是多行,必须使用代码块包装。

虽然使用 Lambda 表达式可以对某些接口进行简单的实现,但并不是所有的接口都可以使用 Lambda 表达式来实现。Lambda 规定接口中只能有一个需要被实现的方法,不是规定接口中只能有一个方法。

jdk 8 中有另一个新特性:default, 被 default 修饰的方法会有默认实现,不是必须被实现的方法,所以不影响 Lambda 表达式的使用。

多个参数可以去掉参数类型,要去掉都去掉,必须加上括号。

package lambdashow;

public class Lambda2 {
	//静态内部类
	static class Hello2 implements iHello{
        public void hello(int a){
            System.out.println("hello world" + a);
        }
    }
    public static void main(String[] args) {
        //常规调用
        iHello i = new Hello();
        i.hello(5);
        //静态内部类调用
        i = new Hello2();
        i.hello(10);
        //内部类调用
        class Hello implements iHello {
            @Override
            public void hello(int a) {
                System.out.println("hello world" + a);
            }
        }
        i = new Hello();
        i.hello(20);
        //匿名内部类
        i = new Hello() {
            @Override
            public void hello(int a) {
                System.out.println("hello world" + a);
            }
        };
        i.hello(25);
        //lambda表达式
        i = (int a) ->{
            System.out.println("hello world" + a);
        };
        i.hello(30);

        //lambda表达式,简化
        i = a -> {
            System.out.println("hello world" + a);
        };
        i.hello(520);

        //lambda表达式,简化2
        //可以去掉大括号的原因是这个函数只有一行代码
        i = a -> System.out.println("hello world" + a);
        i.hello(521);
    }
}
interface iHello{
    void hello(int a);
}

class Hello implements iHello {
    @Override
    public void hello(int a) {
        System.out.println("hello world" + a);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值