在Groovy中实现安全的属性访问是非常简单的事情。假如我们有下面一个简单的数据模型:
我们想要把街道名称打印出来,但是我们不知道是不是所有的实例都可用。为了防止出现NullPointerException异常,我们需要这样写代码:
如果用Groovy你可以这样简单的实现:
如果中间的任何一个对象是null,整个表达式返回null。而不会产生NullPointerException。
class Company {
Address address
String name
}
class Address {
Street street
String postalCode
String city
}
class Street {
String name
String number
String additionalInfo
}
我们想要把街道名称打印出来,但是我们不知道是不是所有的实例都可用。为了防止出现NullPointerException异常,我们需要这样写代码:
// company可能为null.
if (company != null && company.getAddress() != null && company.getAddress().getStreet() != null) {
println company.address.street.name
}
如果用Groovy你可以这样简单的实现:
// company可能为null.
println company?.address?.street?.name
如果中间的任何一个对象是null,整个表达式返回null。而不会产生NullPointerException。