Java的Lambda表达式基础

mac2024-05-14  28

编程思想:

面向对象思想:强调对象,做一件事先去找到能做这件事的对象,然后再调用它的方法。 优点:方便管理,更加符合现实世界中的解决问题的方式。 缺点:代码冗余臃肿。比如为了要调用一个Runnable接口的run()方法, 缺不得不创建一个类去实现这个接口。而我们其实真正关心的确实run()方法中的代码而已。 面向过程(函数思想):强调的是结果,给出参数得到结果。不关心谁去做,怎么做。 优点:专注于一件完成事或者实现一个功能。 缺点:当程序体积过大后就难以管理了,过去大量的函数将会使得程序的维护变得很困难。

Java是典型的强制面向对象的语言,但是在JDK8后加入了一个新特性——Lambda表达式。

格式: ([参数列表])->{ //代码快 }

解释:

()用于声明代码块中的用到的参数 -> 指向代码段 {} 代码段落

例如:用Lambda表达式实现Runnable接口实现多线程

public class Domain{ public static void main(String[] args){ //匿名内部类,启动线程 new Thread(new Runnable(){ @Override public void run(){ System.out.println("匿名内部类实现:"+Thread.currentThread().getName); } }).start(); //Lambda表达式方式 new Thread(()->{ System.out.println("Lambda表达式实现:"+Thread.currentThread().getName); }) } }

由上面例子可以看出,lambda表达式的简洁之处。

使用Lambda表达式的条件:

必须是在有且仅有一个抽象方法的接口上来使用。lambda表达式必须具有上下文推断环境中实现。lambda表达式()中的参数类型是可以省略的,因为可以通过接口中的抽象方法的声明推断出来。只有一条语句的方法可以省略{}和分号还有return的,因为返回值也是可以推断出来的。注意:lambda表达式中的{},分号,return要省略必须一起省略的。备注:在Java中只有一个抽象方法的接口称之为"函数式接口"。

Lambda表达式的省略写法:

new Thread(()->System.out.println("Lambda表达式实现:"+Thread.currentThread().getName))

补充带参数的接口

new Thread((int a)->System.out.println("参数"+a));

初学小白,有错误或者不足之处欢迎指出或者补充。

最新回复(0)