想象一下,我在
Java中生成了XML生成的实体,它包含了我需要的一些数据.
例如:
例如:
<Car> <Engine> <Power> 175 </Power> </Engine> </Car>
因此,如果我需要一个引擎电源,那么接下来是商业软件开发的最佳实践,我将做下一件事:
Car car = dao.getCar() Power power = car != null && car.engine != null ? power : null return power
我讨厌这个.有时似乎有一半的代码只是空检查.
有任何想法吗?
解决方法
看看
Java 8 Optional class.
它确实如此:它避免了对null的丑陋检查.
它确实如此:它避免了对null的丑陋检查.
在您的情况下,您可以使用此代码段来避免它们:
Car car = dao.getCar(); Optional<Car> optionalCar = Optional.ofNullable(car); Optional<Power> optionalPower = getPowerIfPresent(optionalCar); Power power = Optional.empty(); if(optionalPower.isPresent()) { power = optionalPower.get(); }
在写完一个能够返回给定汽车动力的功能之后:
public static Optional<Power> getPowerIfPresent(Optional<Car> car) { return car .flatMap(c -> c.getEngine()) .map(e -> e.getPower()); }