ble*_*h10 0 java coding-style code-cleanup optional
所以我完全使用 isPresent 而不是使用 == null 来检查对象是否成功返回,但我觉得我陷入了用 isPresent 乱丢代码的坑。
所以假设我有一堆不同的端点来检索或更新模型。我希望在他们每个人的开头都没有 isPresent 检查这个对象是否存在!
例子:
Optional<Object> myObject = objectRegistry.get(name);
if (myObject.isPresent()) {
doSomething();
} else {
throw new ObjectNotFoundException(stampName);
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找解决这种乱扔垃圾的最佳实践,我可以想象其中一种解决方案是使用一种方法来执行此检查,并且我可以随时调用它,而调用它的其他方法将不得不抛出 ObjectNotFoundException
我希望在他们每个人的开头都没有 isPresent 检查这个对象是否存在!
需要检查是因为如果它不存在就会抛出异常。
// 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'
Run Code Online (Sandbox Code Playgroud)
对于 Java8,这将是
final Object o = myObject.orElseThrow(() -> new ObjectNotFoundException(stampName));
// carry on with 'o'
Run Code Online (Sandbox Code Playgroud)
它会将代码减少到一行,您可以将其移至模板方法。