匿名内部类简化lambda
时间: 2024-12-29 11:26:36 浏览: 7
### 如何用Lambda表达式替代匿名内部类
在Java中,Lambda表达式可以显著简化代码结构,尤其是在处理单方法接口(即函数式接口)时。通过使用Lambda表达式替换传统的匿名内部类,可以使代码更加简洁易读。
#### 替代匿名内部类的具体方式
考虑一个典型的场景——创建线程并启动它:
```java
// 使用匿名内部类的方式
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Anonymous inner class running");
}
});
thread.start();
```
这段代码可以通过引入Lambda表达式变得更为精炼:
```java
// 使用Lambda表达式的版本
Thread thread = new Thread(() -> System.out.println("Lambda expression running"));
thread.start();
```
上述两段代码实现了相同的功能,但是后者明显更短小直观[^3]。
对于带有参数的方法同样适用此原则。比如定义比较器用于集合排序的情况:
```java
List<String> list = Arrays.asList("apple", "orange", "banana");
// 使用匿名内部类作为Comparator实现
list.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.compare(o1.length(), o2.length());
}
});
System.out.println(list);
```
同样的逻辑利用Lambda表达式则变为:
```java
// 使用Lambda表达式优化后的写法
list.sort((o1, o2) -> Integer.compare(o1.length(), o2.length()));
System.out.println(list);
```
这里不仅减少了冗余的模板代码,还提高了可读性和维护效率[^4]。
另外,在某些情况下还可以进一步采用方法引用来达到更高的简洁度。例如上面的例子如果仅仅是打印对象,则可以直接引用`System.out::println`这样的静态方法来完成操作[^1]。
阅读全文