在 Java 中,Optional 类被设计用来避免空指针异常(NullPointerException)并使代码更加简洁和可读
以下是一个使用 Java Optional 进行链式调用的示例:
import java.util.Optional;
public class OptionalDemo {
public static void main(String[] args) {
Person person = new Person("John", new Address("123 Main St", new City("New York")));
Optional<Person> optionalPerson = Optional.ofNullable(person);
String cityName = optionalPerson
.flatMap(Person::getAddress)
.flatMap(Address::getCity)
.map(City::getName)
.orElse("Unknown");
System.out.println("City name: " + cityName);
}
}
class Person {
private String name;
private Address address;
public Person(String name, Address address) {
this.name = name;
this.address = address;
}
public Optional<Address> getAddress() {
return Optional.ofNullable(address);
}
}
class Address {
private String street;
private City city;
public Address(String street, City city) {
this.street = street;
this.city = city;
}
public Optional<City> getCity() {
return Optional.ofNullable(city);
}
}
class City {
private String name;
public City(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
在这个示例中,我们有一个 Person 类,其中包含一个 Address 对象,而 Address 对象又包含一个 City 对象。我们使用 Optional 进行链式调用,从 Person 对象中获取 City 名称。
注意,我们在 Person 和 Address 类中的 getter 方法上使用了 Optional.ofNullable(),这样可以确保在链式调用过程中,如果某个对象为 null,Optional 会正确处理这种情况,而不会抛出空指针异常。
在链式调用中,我们使用了 flatMap() 方法来处理可能为 null 的对象。flatMap() 方法接受一个函数作为参数,该函数将当前值转换为另一个 Optional 对象。如果当前值为 null,则返回一个空的 Optional 对象。这样,我们可以继续链式调用,而不必担心空指针异常。
最后,我们使用 map() 方法来获取 City 名称,并使用 orElse() 方法提供一个默认值(在本例中为 “Unknown”),以防找不到城市名称。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。