这更像是一个改进的建议,而不是一个问题。
通过发明空引用我们都知道托尼霍尔的“十亿美元错误”。 Google在guava library到avoid using null的维基中提供建议。
我非常感谢Spring Data项目,我们在许多项目中使用Spring Data MongoDB。是否有可能用Optional<T>
替换所有可能的空引用返回值?我认为使用Spring Data存储库抽象时这将是一个很大的改进。
我知道很多接口都需要更改,但代码更改几乎是微不足道的,只需将返回类型包装在Optional.of(returnValue)
中。
答案 0 :(得分:13)
已经在Release Release Dijkstra的RC1中引入了Guava / JDK8 Optional<T>
支持。请查看spring-data-examples for java8以查看其工作原理。
interface CustomerRepository extends Repository<Customer, Long> {
// CRUD method using Optional
Optional<Customer> findOne(Long id);
// Query method using Optional
Optional<Customer> findByLastname(String lastname);
}
BTW:还支持默认方法。
答案 1 :(得分:1)
我认为,一旦Spring Data可以放弃对早于JDK 8的JDK版本的支持,使用JDK 8 Optional应该相当容易。但是,由于这会改变整个API,您必须发布一个新的主要版本,以及升级路径等(代码更改将是微不足道的,但不会对Spring Data用户产生影响)。
答案 2 :(得分:1)
使用最新版本的Spring Data the CrudRepository now actually returns `Optional