首页 > 解决方案 > Lombok @NonNull 不适用检查返回类型

问题描述

IDE:Intellij

我正在使用 Lombok 的 NonNull 注释来自动生成 Null 指针检查并在方法参数和返回类型上抛出异常。

在编写单元测试时,“null”方法参数确实会引发异常,但 null 返回类型不会引发异常。

import lombok.NonNull;
public @NonNull String function( @NonNull String input) {
    return null;
}

以下测试失败:

@Test
public void 
whenReturnTypeIsNull_ThenIllegalArgumentExceptionIsThrown(){
    assertThrows(IllegalArgumentException.class, ()-> testClass.function() );
}

随着消息:

Expected java.lang.IllegalArgumentException to be thrown, but nothing was thrown

标签: intellij-idealombokjunit5

解决方案


Lombok 项目 文档明确指出,注释NonNull允许为构造函数和方法参数生成样板空检查:

您可以在方法或构造函数的参数上使用 @NonNull 让 lombok 为您生成一个空检查语句。

因此,您应该以编程方式检查您的返回值不变量,包括非空值。


推荐阅读