我有这个package-info.java
在我的项目的根包:
/**
In this project, parameters are assumed to be non-null by default.
If a parameter may be null, you should annotate it with `@Nullable`.
This file added to tell IDEA about our nullability approach.
`ParametersAreNonnullByDefault` specifies this approach, but apparently only
works at the package level, but DefaultQualifier specifies `Nonnull` for all
packages underneath.
*/
@DefaultQualifier(Nonnull.class)
@javax.annotation.ParametersAreNonnullByDefault
package kopi.apisvc;
import org.checkerframework.framework.qual.DefaultQualifier;
import javax.annotation.Nonnull;
下面的演示代码是问题的一个例子,我不想改变代码的行为,我只想让Idea不显示警告.我不想重构为使用Optional<>
,也不想使用会改变代码行为的Objects.nonNull()
之类的东西.
public static void doSomething(){
@Nullable String value = null;
var formattedValue = formatThing("", value);
System.out.println(formattedValue);
}
public static String formatThing(Object... elements){
// implementation that handles null value array elements properly
}
当将空值传递给FormatThing()方法时,IntelliJ Idea会显示一条警告,说明是Passing 'null' argument to parameter annotated as @NotNull
.但是,这不是问题,因为该方法旨在处理其元素的空值.
如何判断数组的元素值是否允许为空?
在元素声明上加上@Nullable
不是一个有效的答案,因为:
- 它指示数组本身可能为空(这不是本意)
- 它无论如何都不能解决问题--IDEA仍然显示警告.
我不想在调用带有可能为空元素的方法的任何地方添加禁止显示警告.
版本
- Java :21
- IntelliJ IDEA:2023.3.3