在Java中使用Optional
不能防止NPE,因为值仍然可以是null
:
Optional<String> myMethod() {
return null;
}
至少在运行时对此加以保护的一种方法是使用@NotNull
批注。 (在Java编译时是不可能的,因为它没有非null引用,这与更复杂的语言(如Swift和Kotlin)相对。)
检测到@NotNull
时,使用null
将立即崩溃,从而防止null
遍历程序,并更容易查明错误源。最好将它与单元测试结合使用,以使其具有弹性,以防止因重构而损坏。
据我所知,对于@NotNull
返回值和参数使用Optional
总是有意义的。
现在是问题:
是否可以使Java为@NotNull
的返回值和参数自动推断Optional
?即我不必每次使用都编写它,而是通过设置一些构建设置或类似设置来具有这种行为?
答案 0 :(得分:0)
Optional不能仅保留非null值。它也可能包含空值。因此,您的建议与Optional的设计背道而驰。