java 8 新特性(lambda语法)

Lambda能够取代某些匿名内部类,使用lambda表达式的一个注意的地方是,它调用的接口为函数式接口(只定义了一个抽象方法的接口)。

          Lambda表达式新增一个“->”箭头操作符也叫Lambda操作符,其作用是将Lambda拆分为两个部分。左侧为Lambda的参数列表 -> 右侧为Lambda表达式的功能。例:

徒手打的代码,不保证一定能运行,如发现错误还望告知

public interface frist<T>{

 void accept(T t); 

}

public static testLambda{

@Test

public void testLambda(){

first<String> num1=(x) -> System.out.println(x);

num1.accept("一段测试文字"); 

}

重点看红色部分,这个例子只是让我们明白它的左右两边放些什么东西。具体的语法我们下面来介绍

我们的Lambda表达式左右两边分别由 ( ) -> { }两种括号括起来,或许你看到这有疑问了,为什么我上面的例子右边没有{ }呀?别急,等我把语法介绍完你就懂啦。

既然我们这是一个关于接口的表达式,接口的情况也各不相同,有无参的有参,一个参数多个参数,无返回值有返回值的,我们的表达式也跟随着接口的不同,而语法格式上有略微的不同。

  • 无参数无返回值  无参数传入则左边参数列表则左边括号为 空( ) -> System.out.println("测试");  右边无需有返回值
  • 1个参数无返回值  当只有一个参数是左边括号可保留也可以省略即 x -> System.out.println("x");右边无需有返回值
  • 多个参数,有返回值,且Lambda体中有多个表达式,则表达式为 (x,y,z,...) -> { System.out.println("x");  retuen y;}

若lambda体中只有一条语句{}与return 这个单词也可以省略,Lambda表达式中参数的类型可以不写,因为JVM编译器能通过上下文推断出数据类型,即“数据推断”。

语法总结一句话:左右遇一括号省,左侧推断类型省。接下来我要用java 8自带的四大核心函数接口来举一些例子。

首先介绍一下这四大核心接口:

   Consumer<T> :属于消费型接口,即无返回值但需传参。抽象方法为 void accept (T t)

  Supplier<T> :属于供给型接口,即有返回值无传参。抽象方法为 T get()

  Function<T> :属于函数型接口 ,既有返回值也要传参。抽象方法为 R apply(T t)

 Predicate<T>:属于断言型接口,返回值为boolean类型。抽象方法为 boolean test(T t)

上面我介绍了Lambda,现在又了解了四个核心接口,下面我将放一些我写的实例来帮助大家理解


输出结果为100


输出结果如下



输出结果如下



输出结果如下



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值