使Java推断@NotNull为可选的返回类型

时间:2018-08-16 13:20:20

标签: java optional notnull

在Java中使用Optional不能防止NPE,因为值仍然可以是null

Optional<String> myMethod() {
    return null;
}

至少在运行时对此加以保护的一种方法是使用@NotNull批注。 (在Java编译时是不可能的,因为它没有非null引用,这与更复杂的语言(如Swift和Kotlin)相对。)

检测到@NotNull时,使用null将立即崩溃,从而防止null遍历程序,并更容易查明错误源。最好将它与单元测试结合使用,以使其具有弹性,以防止因重构而损坏。

据我所知,对于@NotNull返回值和参数使用Optional总是有意义的。

现在是问题: 是否可以使Java为@NotNull的返回值和参数自动推断Optional?即我不必每次使用都编写它,而是通过设置一些构建设置或类似设置来具有这种行为?

1 个答案:

答案 0 :(得分:0)

Optional不能仅保留非null值。它也可能包含空值。因此,您的建议与Optional的设计背道而驰。