Java – Lambda 表达式

简介

Lambda 是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。

 

使用Lambda

Lambda 在JDK8 后引入的。

举例,我们使用 Arrays.sort() 排序函数,sort() 方法需要一个类实现它的接口方法,我们通常使用匿名内部类作为这个方法的调用,代码如下

Arrays.sort(arr, new Comparator<Integer>() {
   @Override
    public int compare(Integer o1, Integer o2) {
       return o1 - o2;
     }
});

 

 

通过使用Lambda 表达式,我们可以简化接口实现名和接口方法:

Arrays.sort(arr, (Integer o1, Integer o2) -> {
    return o1 - o2;
});

 

 

Lambda 表达式

Lambda 表达式书写方法如下,

(参数 ) -> {
    方法体
});

 

Lambda 使用限制

1.Lambda 表达式只能简化函数式接口的匿名内部类的写法

2.函数式接口是指:有且仅有一个抽象方法的接口,接口上方可以加上 @FunctionalInterface

 

 

Lambda 省略写法

1.参数类型可以省略不写

2.如果只有一个参数,参数类型可以省略不写,同时 () 也可以省略

3.如果 Lambda 表达式的方法体只有一行,大括号,分号,return 也可以省略不写,需要同时省略。

 

举例

我们先定义一个只接收一个参数的接口

@FunctionalInterface
interface Swim{
    public abstract int swimmer(int i);
}

// 这个方法调用接口方法
public static void swimmer(Swim s, int i){
    s.swimmer(i);
}

 

 

当我们要调用这个方法的时候,当参数是一个接口,我们就必须实现这个参数:

swimmer(new Swim() {
    @Override
    public int swimmer(int i) {
        return i;
    }
}); 

 

使用Lambda方法

 swimmer((int i) -> {
           return i;
       }
 );

 

因为传入参数只有一个,所以可以省略 () 和类型

 swimmer( i -> {
           return i;
       }
 );

 

因为方法体中,只有一行,所以可以把 大括号,分号,和 return 也省略掉,最后简化结果:

swimmer(i -> i);

 

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

THE END
分享
二维码
打赏
海报
Java – Lambda 表达式
简介 Lambda 是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。   使用……
<<上一篇
下一篇>>