java8 Lambda表达式简介

在《java8实战》这本书中,对Lambda的解释如下:

可以把Lambda表达式理解为简洁的表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表,函数主体,返回类型,可能还有一个可以抛出的异常列表。

lambda表达式基础语法:

    java中,引入了一个新的操作符“->”,该操作符在很多资料中,称为箭头操作符,或者lambda操作符;箭头操作符将lambda分成了两个部分:

    1.   左侧:lambda表达式的参数列表
    2.   右侧:lambda表达式中所需要执行的功能,即lambda函数体
    3.lambda表达式语法格式;

        1).无参数,无返回值的用法 :() -> System.out.println("hello lambda");

   

@Test
	public void test1() {
		Runnable r = new Runnable() {
			@Override
			public void run() {
				System.out.println("hello runnable");
			}
		};
		r.run();
		Runnable r1 = () -> System.out.println("hello lambda");
		r1.run();
	}

        2).有一个参数,无返回值的用法: (x) -> System.out.println(x); 或者 x -> System.out.println(x); 一个参数,可以省略参数的小括号

@Test
	public void test2(){
		Consumer<String> con = (x) -> System.out.println(x);
		con.accept("有一个参数,无返回值的用法(Consumer函数式接口)");
	}

3).有两个参数,有返回值的:(x, y) -> x + y

public void test3() {
		BinaryOperator<Integer> binary = (x, y) -> x + y;
		System.out.println(binary.apply(1, 2));// 3
	}

4).剩下的多个参数,就不在继续介绍了,按照上面的推测,就可以了,上面的例子,函数体中,都是一行语句,最后一个语法,介绍下,lambda表达式中,多行语句,分别在无返回值和有返回值的抽象类中的用法

@Test
	public void test4() {
		// 无返回值lambda函数体中用法
		Runnable r1 = () -> {
			System.out.println("hello lambda1");
			System.out.println("hello lambda2");
			System.out.println("hello lambda3");
		};
		r1.run();

		// 有返回值lambda函数体中用法
		BinaryOperator<Integer> binary = (x, y) -> {
			int a = x * 2;
			int b = y + 2;
			return a + b;
		};
		System.out.println(binary.apply(1, 2));// 6

	}

可以看到,多行的,只需要用大括号{}把语句包含起来就可以了;有返回值和无返回值的,只有一个return的区别;只有一条语句的,大括号和renturn都可以不用写;

5).lambda的类型推断

@Test
	public void test5() {
		BinaryOperator<Integer> binary = (Integer x, Integer y) -> x + y;
		System.out.println(binary.apply(1, 2));// 3
	}

可以看到,在lambda中的参数列表,可以不用写参数的类型,跟java7中 new ArrayList<>(); 不需要指定泛型类型,这样的<>棱形操作符一样,根据上下文做类型的推断

 

lamabd表达式中,需要有函数式接口的支持;

函数式接口定义:接口中只有一个抽象方法的接口,称为函数式接口;

可以使用@FunctionalInterface注解修饰,对该接口做检查;如果接口里,有多个抽象方法,使用该注解,会有语法错误

 

 

 

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

葵花下的獾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值