JDK新特性之lambda

Lambda表达式

Lambda好处:简化内部类的使用。

public static void main(String[] args) {
        new OrderService() {
            @Override
            public void get() {
                System.out.println("get");
            }
        }.get();
    }
------------------
public static void main(String[] args) {
        ((OrderService) () -> System.out.println("get")).get();
    }   

调用接口使用匿名内部类重写方法
Lambda表达式需要函数接口的支持

函数接口定义:

1.在接口中只能有一个抽象方法

2.能够定义Object类中的方法

3.能够通过default修饰普通方法

4.@FunctionalInterface 标记为该接口为函数接口

标准格式
(参数类型 参数名称) -> { 代码体; }

//(参数类型 参数名称):参数列表
//{代码体;}:方法体
//-> :箭头,分隔参数列表和方法体
无参方法的时候lambda表达式
OrderService orderService = () -> {
            System.out.println("使用lambda");
        };
        orderService.get();
参数方法的
public static void main(String[] args) {
        OrderService2 orderService2 = (i, j) -> {
            return i + "------" + j;
        };
        System.out.println(orderService2.get(7, 9));

    }
精简版
public static void main(String[] args) {
        OrderService2 orderService2 = (i, j) -> {
            return i + "------" + j;
        };
        System.out.println(orderService2.get(7, 9));
    
    	//使用Lambda方法体中只有一条语句的情况下,在这时候我们不需要写(也可以不需要写return
    	String s = ((OrderService2) (i, j) -> i + "-----" + j).get(7, 7);
        System.out.println(s);

    }
实战案例
public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("suran");
        arrayList.add("xiaoguo");

        arrayList.forEach((s)->{System.out.println(s);});
    }
Lambda和匿名内部类使用上的区别

(1) 所需的类型不一样

​ 匿名内部类,需要的类型可以是类,抽象类,接口

​ Lambda表达式,需要的类型必须是接口

(2)抽象方法的数量不一样

​ 匿名内部类所需的接口中抽象方法的数量随意

​ Lambda表达式所需的接口只能有一个抽象方法

(3)实现原理不同

​ 匿名内部类是在编译后会形成class

​ Lambda表达式是在程序运行的时候动态生成class

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值