如何停止使用 Optional IsPresent() 乱扔代码?
How to stop littering your code with Optional IsPresent()?
所以我一直在使用 isPresent 而不是使用 == null 来检查对象是否成功返回,但我觉得我陷入了用 isPresent 乱扔代码的坑。
假设我有一堆不同的端点来检索或更新模型。我希望在每个对象的开头都没有 isPresent 检查这个对象是否存在!
示例:
Optional<Object> myObject = objectRegistry.get(name);
if (myObject.isPresent()) {
doSomething();
} else {
throw new ObjectNotFoundException(stampName);
}
我正在寻找解决这种乱扔垃圾的最佳做法,我可以想象其中一种解决方案是使用一种方法来执行此检查,我会在需要时调用它,而调用它的其他方法将具有抛出 ObjectNotFoundException
I would love to NOT have a isPresent in the beginning of every one of them checking if this object exist to begin with!
需要检查,因为如果不存在就会抛出异常。
// note how this opposite check reduces the nestedness
// and simplifies the flow
if (!myObject.isPresent()) {
throw new ObjectNotFoundException(stampName);
}
final Object o = myObject.get();
// carry on with 'o'
其中 Java8 将是
final Object o = myObject.orElseThrow(() -> new ObjectNotFoundException(stampName));
// carry on with 'o'
它会将代码减少到一行,您可以将其移动到 a template method。
所以我一直在使用 isPresent 而不是使用 == null 来检查对象是否成功返回,但我觉得我陷入了用 isPresent 乱扔代码的坑。
假设我有一堆不同的端点来检索或更新模型。我希望在每个对象的开头都没有 isPresent 检查这个对象是否存在!
示例:
Optional<Object> myObject = objectRegistry.get(name);
if (myObject.isPresent()) {
doSomething();
} else {
throw new ObjectNotFoundException(stampName);
}
我正在寻找解决这种乱扔垃圾的最佳做法,我可以想象其中一种解决方案是使用一种方法来执行此检查,我会在需要时调用它,而调用它的其他方法将具有抛出 ObjectNotFoundException
I would love to NOT have a isPresent in the beginning of every one of them checking if this object exist to begin with!
需要检查,因为如果不存在就会抛出异常。
// note how this opposite check reduces the nestedness
// and simplifies the flow
if (!myObject.isPresent()) {
throw new ObjectNotFoundException(stampName);
}
final Object o = myObject.get();
// carry on with 'o'
其中 Java8 将是
final Object o = myObject.orElseThrow(() -> new ObjectNotFoundException(stampName));
// carry on with 'o'
它会将代码减少到一行,您可以将其移动到 a template method。