1. 程式人生 > 其它 >Lambda表示式的學習

Lambda表示式的學習

Lambda

函式式介面:

  1. 任何介面,如果只包含唯一一個抽象方法,他就是一個函式式介面。

  2. 函式式介面可以通過Lambda表示式來建立該介面的物件。

關於Lambda表示式,解決的就是函式式介面的需要採用大量複雜的程式碼,尤其見於執行緒的使用


首先是採用外部類:

public class Lambda {
public static void main(String[] args) {
//要實現介面首先要例項化一個外部類,然後實現
LeiAi leiAi = new LeiAi();
leiAi.like("蘋果");
}
}

//定義一個外部類實現ILike介面
class LeiAi implements ILike{

@Override
public void like(String food) {
System.out.println("我喜歡吃--->"+food);
}
}

//介面
interface ILike{
void like(String food);
}

結果:

![image-20211117195132848](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195132848.png)

接著使用靜態內部類:

ublic class Lambda {

static class LeiAI implements ILike{

@Override
public void like(String food) {
System.out.println("我喜歡吃--->"+food);
}
}

public static void main(String[] args) {
LeiAI leiAI = new LeiAI();
leiAI.like("梨");
}
}

interface ILike{
void like(String food);
}

結果:

![image-20211117195216136](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195216136.png)

區域性內部類:

public class Lambda {


public static void main(String[] args) {
//建立區域性內部類實現
class LeiAI implements ILike{
@Override
public void like(String food) {
System.out.println("我喜歡吃--->"+food);
}
}

new LeiAI().like("葡萄");
}
}

interface ILike{
void like(String food);
}

結果

![image-20211117195540519](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195540519.png)

匿名內部類

public class Lambda {


public static void main(String[] args) {
new ILike() {
@Override
public void like(String food) {
System.out.println("我喜歡吃--->" + food);
}
}.like("柿子");
}
}

interface ILike{
void like(String food);
}

結果:

![image-20211117195926630](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195926630.png)

lambda

public class Lambda {


public static void main(String[] args) {
ILike iLike = (String food)->{
System.out.println("我喜歡吃--->"+ food);
};

iLike.like("西瓜");
}
}

interface ILike{
void like(String food);
}

結果:

![image-20211117200551628](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117200551628.png)

更加簡化的Lambda


public class Lambda {


public static void main(String[] args) {
ILike iLike = food-> System.out.println("我喜歡吃--->"+ food);

iLike.like("榴蓮");
}
}

interface ILike{
void like(String food);
}

其中引數的型別可以全部去掉,但是必須加上括號,只有一句語句才可以去除語法塊中的{}

Lambda在Android中的使用十分廣泛,所以還有一系列內部類的使用也都比較晦澀難懂,一步一個腳印。