Lombok @NonNull 不应用检查 Return 类型

Lombok @NonNull Does Not Apply Check on Return Type

IDE: Intellij

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

在编写单元测试时,'null' 方法参数会抛出异常,但 null return 类型不会抛出异常。

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

Lombok 项目 documentation 明确指出 NonNull 注释允许为构造函数和方法参数生成样板文件 null-checks:

You can use @NonNull on the parameter of a method or constructor to have lombok generate a null-check statement for you.

因此,您应该以编程方式检查 return 值不变量,包括 non-null.