因为值仍然可以为null,所以在Java语言中使用Optional%s不能防止NPE
Optional<String> myMethod() {
return null;
}至少在运行时避免这种情况的一种方法是使用@NotNull注释。( Java在编译时是不可能的,因为它没有非空引用,而不是像Swift和Kotlin这样更复杂的语言)。
当检测到null时,使用@NotNull将立即崩溃,从而阻止null遍历整个程序,并使其更容易定位错误源。它最好与单元测试相结合,以使其对重构造成的破坏具有弹性。
据我所知,对Optional返回值和参数使用@NotNull总是有意义的。
现在问题来了:有没有可能让Java自动推断Optional返回值和参数的@NotNull?也就是说,我不需要为每个用途都编写它,而是通过设置一些构建设置或类似设置来实现这种行为?
发布于 2018-08-16 22:33:23
Optional并不设计为只保留非空值。它也可能包含空值。所以你的建议违背了可选方案的设计。
https://stackoverflow.com/questions/51878106
复制相似问题