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.
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.