Java Lambda表達式主要用于簡化匿名內部類的創建過程,特別是在實現單個抽象方法接口時。Lambda表達式可以替代以下場景中的匿名內部類:
// 使用匿名內部類
new Thread(new Runnable() {
@Override
public void run() {
// 執行任務
}
}).start();
// 使用Lambda表達式
new Thread(() -> {
// 執行任務
}).start();
// 使用匿名內部類
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 處理事件
}
});
// 使用Lambda表達式
button.addActionListener(e -> {
// 處理事件
});
// 使用匿名內部類
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
});
// 使用Lambda表達式
Collections.sort(list, (s1, s2) -> s1.length() - s2.length());
需要注意的是,Lambda表達式并不能完全替代所有匿名內部類的場景。例如,當需要訪問外部類的非final變量或者需要創建匿名內部類的多個實例時,仍然需要使用匿名內部類。此外,Lambda表達式也無法替代需要實現多個方法的接口。