java 如何像 js 一样使用 ?( optional chaining operator)
在 Java 中,没有像 JavaScript 中的可选链操作符(optional chaining operator)一样的语法。但是,可以使用 Java 8 中引入的 Optional 类来实现类似的功能。
假设我们有一个包含嵌套对象的类:
public class MyClass {
private MyOtherClass myOtherClass;
// getters and setters
}
public class MyOtherClass {
private MyThirdClass myThirdClass;
// getters and setters
}
public class MyThirdClass {
private String name;
// getters and setters
}
我们想要获取 MyClass
对象中的 MyThirdClass
对象的名称属性,但是可能会遇到 NullPointerException
异常。可以使用 Optional 类来避免这个问题:
Optional.ofNullable(myClass)
.map(MyClass::getMyOtherClass)
.map(MyOtherClass::getMyThirdClass)
.map(MyThirdClass::getName)
.orElse(null);
这里,我们使用 Optional.ofNullable
方法将 myClass
对象转换为 Optional 对象,然后使用 map
方法逐级获取嵌套对象的属性。如果任何一个属性为 null,则整个表达式返回 null。最后,我们使用 orElse
方法指定默认值,以避免返回 null 值。
需要注意的是,虽然这种方式可以避免 NullPointerException
异常,但是可能会导致代码变得更加复杂。因此,应该谨慎使用 Optional 类来实现类似于 JavaScript 的可选链操作符的功能。