导读
最近项目中遇到对
pojo类进行链式调用getter方法获取属性问题,每一步getter调用后都可能产生空指针,而在各个属性获取时,又不想干扰其他属性,即若没获取到则返回null即可。显然,采用大段的if(obj.getXX != null)来处理的话,可行但略显繁琐,而采取大段的try catch来统一捕获异常的话,势必一个地方抛出异常,其他的属性获取也会受到影响,若是每个调用都被单独的try catch处理,也会显得不够优雅
场景假设
假设有以下类及关系定义:
// @Data为lombok中的注解
@Data
class Address {
private String remark;
private Province province;
}
@Data
class Province {
private String provinceName;
private City city;
}
@Data
class City {
private String cityName;
private Town town;
}
@Data
class Town {
private String townName;
private Integer townSize;
}
当需要根据Address对象获取townName时,通常可以这样做:
/**
* 判断非null进行下一步
*/
public String getTownName(Address address) {
if (address != null) {
if (address.getProvince() != null) {
if (address.getProvince().getCity() != null) {
if (address.getProvince().getCity().getTown() != null) {
return address.getProvince().getCity().getTown().getTownName();
}
}
}
}
return null;
}
/**
* 判断为null则提前返回
*/
public String getTownName(Address address) {
if (address == null) {
return null;
}
if (address.getProvince() == null) {
return null;
}
if (address.getProvince().getCity() == null) {
return null;

在项目中遇到链式调用getter方法时可能产生空指针异常,通过使用Java 8的Optional类进行处理,简化代码并避免了大段的异常捕获。文章探讨了Optional的使用方法,性能影响,并提供了性能测试结果,表明在大多数情况下,Optional的使用对性能影响不大。
最低0.47元/天 解锁文章
1009

被折叠的 条评论
为什么被折叠?



