java8新特性-lambda

应用场景:为了解决代码重复使用时,提高复用率。

 

语法格式:

lambda 分为两个部分, 由中间部分 ‘->’做分割

左侧,参数列表;右侧是 lambda体(执行单元内容)

1、无参数

()->System.out.println("hello")

2、有一个参数,无返回值

(s)->System.out.println(s)

若只有一个参数的时候,小括号可以不写

s->System.out.println(s)

3、有多个参数,且有返回值的时候,且执行单元有多条语句

(s1,s2)->{

    s1=s2+10;

    return s1;

}

4、当执行单元只有一条语句,无论是否有返回值时

(s1,s2)->s1+s2;

此时,可以省略大括号。

若原接口方法,有返回值,则此时返回值内容 也为s1+s2;

 

注:由于,java会自动会根据上下问做类型推断,所以,左边括号的类型可以省略不写

如:(int s)->s++;和 (s)->s++是一样的效果。

 

 

应用需求:

lambda需要 函数式接口的支持;

函数式接口:是一个只有一个方法的接口。可以用

@FunctionalInterface注解来表达,一旦被这个注解后,则接口不能拥有多于1个的方法,否则报错。

 

 

 

 

总结:

lambda执行单元实际上就是为了实现接口的中方法。

 

写个完整的操作例子:

首先创建接口myfunction:

@FunctionalInterface
public interface myfuntion<T,R> {
    public R getValue(T t1,T t2);
}
再写个执行类:
public class test {

    public static void main(String[] args) {

        con(25L,45L,(t1,t2)->t1 * t2);//实现乘法

        con(25L,45L,(t1,t2)->t1 + t2);//实现加法
    }

    public static void con(Long t1,Long t2,myfuntion<Long,Long> my){
        System.out.println(my.getValue(t1,t2));
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值