lambda表达式

1. lambda表达式的形式

(parameters)-> expression
(parameters)-> {statement; }

形式一:没有参数

  ()-> System.out.println("Hello World!");

形式二:只有一个参数

  name -> System.out.println("Hello World from" + name + " !");

形式三:没有参数,逻辑复杂

  ()-> {
        System.out.println(" Hello");
        System.out.println(" World");
      }

形式四:包含两个参数的方法

	BinaryOperator<Long> functionAdd = (x,y) -> x + y;
    functionAdd.apply(10L, 20L);

形式五:对参数显示声明

    BinaryOperator<Long> functionAdd = (Long x,Long y) -> x + y;
    functionAdd.apply(10L, 20L);

2.函数接口

  • 条件:接口只有一个抽象方法
  • java8的函数式接口注解:@FunctionalInterface
  • 函数式接口的抽象方法签名:函数描述符

3.常用函数接口及使用

常用函数接口及使用

4.方法引用

定义

调用特定方法的lambda表达式的一种快捷写法,可以让你重复使用的方法定义,
并像lambda表达式一样传递他们

三种表现方法

(1)指向静态方法的方法引用

	/**
	 * (args) -> ClassName.staticMethod(args);
	 * ClassName::staticMethod
	 */
	public void test1() {
		Consumer<String> consumer = 
				(String number) -> Integer.parseInt(number);
		Consumer<String> consumer2 = Integer::parseInt;
	}

(2)指向任意类型实例方法的方法引用

	/**
	 * (args) -> args.instanceMethod;
	 * ClassName::instanceMethod;
	 */
	public void test2() {
		Consumer<String> consumer = 
				(String str) -> str.length();
		Consumer<String> consumer2 =
				String::length;
	}

(3)指向现有对象的实例方法的方法引用

	/**
	 * (args) -> object.instanceMethod(args);
	 * object::insatanceMethod;
	 */
	public void test3() {
		StringBuilder buffer = new StringBuilder();
		Consumer<String> consumer = 
				(String str) -> buffer.append(str);
		Consumer<String> consumer2 = buffer::append;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值