Lamda表达式

发布于:2023-01-16 ⋅ 阅读:(603) ⋅ 点赞:(0)

一.例子

Lambda表达式的本质只是一个"语法糖",使你可以使用更少的代码来实现同样的功能。

public static void main(String[] args){
    fun(() -> System.out.println("此处为Lamda表达式"));
}

二.Lamda表达式的使用形式

只关心 参数 方法主体

1.方法主体为一个表达式                {params} -> expression

2.方法主体为一行执行代码             {params} -> statement

3.方法主体需要多行代码                 {params} -> { statement }

三.Lamda表达式的使用

示例:

无参数:          () -> 6

一个参数:      x ->  6*6

两个参数:      (x, y) -> x+y

int型:             (int x, int y) -> x + y

对象:             (String str) -> System.out.println(str)

多条语句,有返回值:

(s) -> {
    System.out.println("Lamda");
    return "def";
}

补充:

1.一个参数可以不写括号

2.方法主体只有一条语句return{}都可以省略不写

3.参数列表的数据类型可以不写

4.方法主体多条语句要用{}

四.方法引用

相当于为方法定义了别名

1.简单例子

interface IMessage<T>{
    public T upper();
}
public class Test{
    public static void main(String[] args){
        IMessage<String> msg = "aaa" :: toUpperCase;     // (1)
        String str = msg.upper();                        // (2)
        System.out.println(str);
    }
}

(1) 

"aaa" 是String类的实例化对象 

"aaa" :: toUpperCase 相当于为 toUpperCase() 方法定义了别名

(2)

msg.upper() 相当于 "aaa".toUpperCase()

2.四种操作形式

1.引用 静态 方法                                 类名称 ::  static方法名称

2.引用 某个对象 的方法               实例化对象 :: 普通方法

3.引用 特定类型 的方法                      特定类 :: 普通方法

4.应用 构造 方法                                 类名称 :: new

五.内建函数式接口

为了简化开发者的定义以及操作的统一

1.功能型接口(Function)          接收一个参数      返回一个处理结果

2.消费型接口(Consumer)       接收数据             不返回

3.供给型接口(Supplier)          不接收参数          可以返回结果

4.断言型接口(Predicate)        判断操作使用

<更多的相关知识及解释这里就不展开说明了>

六.Lamda与匿名内部类比较

优点:简洁

缺点:Lamda对应的接口只能有一个方法(匿名内部类对应的接口可以有多个方法)


网站公告

今日签到

点亮在社区的每一天
去签到