将null值传递给方法时自动抛出IllegalArgumentException

w.b*_*ian 4 java null optional java-8

我正在探索在重构我正在研究的代码库的一部分时消除null的可能性.我们已升级到java 8,因此我们Optional<T>随意使用.为了有效地做到这一点,我们需要确保不将null传递给我们的任何方法(这是在我们包装任何潜在的空值之后Optional,从外部服务/库进入我们的系统).处理这个的显而易见的方法是显式检查null并IllegalArgumentException在必要时抛出,但是,这将是不合理的冗长和手动.是否有更少的手动/更简洁的方式来做到这一点?

Pau*_*ton 9

你可以使用Objects::requireNonNull这个.例如,在构造函数中,您可以执行以下操作:

this.myField = Objects.requireNonNull(myField);
Run Code Online (Sandbox Code Playgroud)

NullPointerException如果你通过它会抛出一个null.

避免过度使用Optional.例如,请参阅此答案.

  • @ w.brian,我认为相关的答案很好地解释了"过度使用"; 例如,您不应该从方法返回`Optional <Collection>`,也不应该使用`Optional`方法参数. (2认同)

Tri*_*ics 0

Checker 框架提供了一个注释@NonNull,允许在编译时检查是否存在可以将空值传递给带注释的引用的代码路径。

请参阅:https ://checkerframework.org/api/org/checkerframework/checker/nullness/qual/NonNull.html