轉自:
http://www.java265.com/JavaCourse/202206/3754.html
下文是筆者撰寫的一篇關于Lambda運算式入門的文章,當你閱讀完這篇文章后,你就可以進入Lambda的大門了,如下所示
Lambda簡介
Lambda運算式:
是JDK8開始后的一種新語法形式
Lambda的功能:
簡化匿名內部類寫法
Lambda語法格式
(匿名內部類被重寫方法的形參串列)->{
被重寫方法的方法體代碼
}
注:->是語法形式,無實際意義
注意事項:Lambda只能簡化函式式編程介面的匿名內部類的寫法
例:
@FunctionalInterface//加上這個注解必須是函式式介面,且只有一個抽象方法
interface User{
void run();
}
//簡化之前的匿名內部類
User p = new User(){
@Override
public void run(){
System.out.println("我是java265.com");
}
};
//簡化之后
User p = () -> {
System.out.println("我是java265.com");
};
另:也可以將其作為引數代入方法中去使用:
//在原來的基礎上定義一個test方法
public static void test(User p){
System.out.println("ttttttttt")
p.run();
}
//不使用Lambda的情況下:
test(p);//需要在定義匿名內部類之后,將p代入;
//使用Lambda的情況:
User p = () -> {
System.out.println("我是java265.com");
};
test(() -> {
System.out.println("我是java265.com");
});
//由于等號右邊即是User創建的物件p,因此可以可以直接將其代入
Lambda優點:
Lambda是一個匿名函式
可將Lambda運算式理解為是一段可以傳遞的代碼
Lambda優點
//Lambda應用之前:
Arrays.sort(users,new Comparator<Integer>(){
@Override
public int compare(Integer o1,Integer o2){
return o2 -o1;
}
});
//Lambda應用之后:
Arrays.sort(users,(Integer o1,Integer o2) -> {
return o2 -o1;
});
Lambda運算式省略原則
Arrays.sort(users,(Integer o1,Integer o2) -> {
return o2 -o1;
});
//省略引數型別之后
Arrays.sort(users,( o1, o2){
return o2 -o1;
});
當只有一個引數,引數型別可以省略,同時()也可以省略
//簡單參考一個單個引數的例子,不需要了解其具體含義
btn.addActionListener((ActionEvent e) -> {
System.out.println("示例分享");
});
//簡化之后:
btn.addActionListener( e -> {
System.out.println("示例分享");
});
當Lambda運算式的方法體代碼只有一行代碼,可以省略大括號不寫,同時要省略分號
//參照上一條規則的例子
btn.addActionListener( e -> {
System.out.println("示例分享");
});
//簡化之后:
btn.addActionListener( e -> System.out.println("示例分享") );
當Lambda運算式的方法體代碼只有一行代碼,可以省略大括號不寫
當這行代碼是return陳述句,必須省略return不寫,同時也必須省略";"不寫
//參照第一條規則的代碼
Arrays.sort(users,(Integer o1,Integer o2) -> {
return o2 -o1;
});
//簡化之后:
Arrays.sort(users,( o1, o2)-> o2 -o1);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492475.html
標籤:其他
上一篇:檔案輸入輸出處理-File
