網(wǎng)站平臺由什么搭建百度推廣登錄平臺登錄
1. 什么是方法引用?
-
定義:Java 8 引入的語法糖,用于 簡化 Lambda 表達式,直接引用已有的方法。
-
符號:使用
::
雙冒號操作符。 -
本質(zhì):將方法作為函數(shù)式接口的實例傳。
2. 方法引用的四種類型
類型 | 語法 |
---|---|
靜態(tài)方法引用 | Class::static_method |
特定對象的實例方法引用 | Class::method |
實例方法引用 | instance::method |
構(gòu)造方法引用 | Class::new |
3.方法引用示例
//1.靜態(tài)方法引用List<Integer> numbers = Arrays.asList(1, 3, 2, 5, 4);// 使用 Lambda 表達式Stream<Integer> sortedInLambda = numbers.stream().sorted((a, b) -> Integer.compare(a, b));System.out.println(sortedInLambda);// 使用方法引用Stream<Integer> sorted = numbers.stream().sorted(Integer::compare);System.out.println(sorted.collect(Collectors.toList())); //[1, 2, 3, 4, 5]//2.特定對象的實例方法引用List<String> names = Arrays.asList("Alice", "Bob", "Charlie");// 使用 Lambda 表達式names.forEach(s -> System.out.println(s));// 使用方法引用names.forEach(System.out::println);//4.構(gòu)造方法引用// 使用 Lambda 表達式Supplier<List<String>> supplier1 = () -> new ArrayList<>();// 使用方法引用Supplier<List<String>> supplier2 = ArrayList::new;
3實例方法引用
class Printer {// 實例方法public void printMessage(String message) {System.out.println(message);}
}public class MethodReferenceExample {public static void main(String[] args) {Printer printer = new Printer();// 使用實例方法引用Runnable r = printer::printMessage;r.run(); // 輸出 null,因為沒有傳遞參數(shù)}
}
4. 方法引用的優(yōu)勢
-
簡化 Lambda 表達式,提升代碼簡潔性。
-
直接引用已有方法,意圖清晰,支持靜態(tài)方法、實例方法、構(gòu)造方法的引用。
-
與函數(shù)式接口(如
Consumer
、Supplier
)緊密結(jié)合。 -
合理使用可提升代碼的可維護性和可讀性。
5.參考
Java 8 方法引用 | 菜鳥教程
?......