Lambda 表達式作為匿名內部類別的替代方案,提供了更簡潔的方式來定義函數式介面的實作:使用簡短語法(parameters) -> expression 定義匿名函數。適用於需要實作函數式介面(只有一個抽象方法)的場合。能夠簡化清單排序和執行緒定義等任務。
Lambda 表達式
#作為匿名內部類別的替代方案,Java 8 引入了 lambda 表達式。 lambda 表達式是一種輕量級的匿名函數,可以在不聲明類別的情況下定義和使用。
語法:
(parameters) -> expression
例如,以下程式碼使用匿名內部類別為按鈕新增監聽器:
Button button = new Button(); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 实现事件处理代码 } });
使用lambda 表達式可以簡化為:
Button button = new Button(); button.addActionListener(e -> { // 实现事件处理代码 });
函數式介面
lambda 表達式只能用於實作函數式接口,即只包含一個抽象方法的介面。 Java 中提供了幾個內建的函數式接口,例如 Runnable
、Callable
和 Comparator
。
實戰案例
使用lambda 表達式對清單進行排序:
List<String> names = Arrays.asList("John", "Mary", "Bob"); // 使用匿名内部类 Collections.sort(names, new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.compareToIgnoreCase(o2); } }); // 使用 lambda 表达式 Collections.sort(names, (o1, o2) -> o1.compareToIgnoreCase(o2));
使用函數式介面定義線程:
// 使用匿名内部类 Thread thread = new Thread(new Runnable() { @Override public void run() { // 线程逻辑 } }); // 使用 lambda 表达式 Thread thread = new Thread(() -> { // 线程逻辑 });
結論
lambda 表達式提供了比匿名內部類別更簡潔、更優雅的方式來編寫程式碼。它們簡化了函數式介面的使用,並提高了程式碼的可讀性和可維護性。
以上是Java 匿名內部類別的替代方案是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!