lambda表達式,及lambda簡化過程


lambda表達式(jdk8特性)

1.為什么要用lambda表達式

原因:因為我們有時候需要用到很多類,但是,這些類我們只用一次或者兩次,所以我們用匿名內部類,但是匿名內部類多了還是很麻煩,所以用lambda表達式再次簡化這種簡單類

讓代碼更加簡潔,避免很多無意義的語句

函數式接口的定義?

lambda表達式使用的前提?

實現一個接口,接口只有一個方法。

lambda的簡化順序 :外部類->靜態內部類->局部內部類->匿名內部類->lambda

interface Person{
    void say();
}
class Student1 implements Person{//第一個,一個外部的類,比較麻煩,代碼也簡單
    @Override
    public void say() {
        System.out.println("學生1說了一句話");
    }
}
public class LambdaTest {
    static class Student2 implements Person{//第2個,靜態內部類
        @Override
        public void say() {
            System.out.println("學生2說了一句話");
        }
    }
    public static void main(String[] args) {
        Person s1 = new Student1();
        s1.say();
        Person s2 = new Student2();
        s2.say();
        class Student3 implements Person{//第3個,局部內部類
            @Override
            public void say() {
                System.out.println("學生3說了一句話");
            }
        }
        Person s3 = new Student3();
        s3.say();
        Person s4 = new Person() {//匿名內部類,沒有類的名稱,必須借助接口或者父類
            @Override
            public void say() {
                System.out.println("學生4說了一句話");
            }
        };
        s4.say();
        Person s5 = ()->{//lambda方法
            System.out.println("學生5說了一句話");
        };
        s5.say();
    }
}

lambda格式:怎么樣簡化成極限?一句?怎么簡化?

(參數列表)->{//參數列表可以繼續省掉類型聲明,一個形參可以省略括號,方法體只有一句可以省略{}
	方法體
}
Pet pet1 = (String food)-> {
            System.out.println(food);
};
Pet pet2 = (food)-> {//兩個參數的時候不能省略()
    System.out.println(food);
};
Pet pet3 = food-> {
    System.out.println(food);//方法體多句話的時候不能省略這句話
};
Pet pet4 = food->System.out.println(food);

Runnable接口,就一個run()方法,可以配合lambda


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM