java8 lambda和 optioal
时间: 2024-12-11 17:15:41 浏览: 5
Java 8引入了许多新特性,其中最显著的是Lambda表达式和Optional类。
### Lambda表达式
Lambda表达式是一种简洁的表示方法,可以用于实现函数式接口(即只包含一个抽象方法的接口)。Lambda表达式使得代码更加简洁和易读。
**语法:**
```java
(parameters) -> expression
```
**示例:**
```java
// 使用匿名类
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Button clicked");
}
});
// 使用Lambda表达式
button.addActionListener(e -> System.out.println("Button clicked"));
```
### Optional类
Optional类是一个容器对象,用于包含可能为null的值。Optional类提供了一些方法来处理可能为null的值,从而避免NullPointerException。
**常用方法:**
1. `of(value)`:创建一个包含给定值的Optional对象。
2. `ofNullable(value)`:创建一个包含给定值的Optional对象,如果值为null则返回一个空的Optional对象。
3. `isPresent()`:如果值存在则返回true,否则返回false。
4. `get()`:如果值存在则返回该值,否则抛出NoSuchElementException。
5. `orElse(other)`:如果值存在则返回该值,否则返回默认值。
6. `orElseGet(supplier)`:如果值存在则返回该值,否则返回由Supplier接口实现提供的值。
7. `orElseThrow(exceptionSupplier)`:如果值存在则返回该值,否则抛出由Supplier接口实现的异常。
**示例:**
```java
// 使用Optional包装可能为null的值
Optional<String> optional = Optional.ofNullable(getNullableString());
// 检查值是否存在
if (optional.isPresent()) {
System.out.println(optional.get());
} else {
System.out.println("Value is absent");
}
// 使用orElse方法提供默认值
String result = optional.orElse("Default Value");
System.out.println(result);
// 使用orElseGet方法提供默认值
String result2 = optional.orElseGet(() -> "Default Value");
System.out.println(result2);
```
阅读全文