Java Lambda表达式可以替代哪些匿名内部类

avatar
作者
筋斗云
阅读量:0

Java Lambda表达式主要用于简化匿名内部类的创建过程,特别是在实现单个抽象方法接口时。Lambda表达式可以替代以下场景中的匿名内部类:

  1. 实现Runnable接口的匿名内部类:
// 使用匿名内部类 new Thread(new Runnable() {     @Override     public void run() {         // 执行任务     } }).start();  // 使用Lambda表达式 new Thread(() -> {     // 执行任务 }).start(); 
  1. 实现ActionListener接口的匿名内部类:
// 使用匿名内部类 button.addActionListener(new ActionListener() {     @Override     public void actionPerformed(ActionEvent e) {         // 处理事件     } });  // 使用Lambda表达式 button.addActionListener(e -> {     // 处理事件 }); 
  1. 实现Comparator接口的匿名内部类:
// 使用匿名内部类 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()); 
  1. 实现其他只有一个抽象方法的接口的匿名内部类。

需要注意的是,Lambda表达式并不能完全替代所有匿名内部类的场景。例如,当需要访问外部类的非final变量或者需要创建匿名内部类的多个实例时,仍然需要使用匿名内部类。此外,Lambda表达式也无法替代需要实现多个方法的接口。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!