我有一个声明为接受和返回的方法null
。
@CheckForNull
public static String truncate(@CheckForNull text, int maxLength) { ... }
null
仅当text
is时才返回null
。当我从标记的方法传入返回值时@Nonnull
,FindBugs 无法知道它truncate
不会返回null
,因此如果我将它分配给标记的字段,则会发出警告@Nonnull
。
@Nonnull
public static String trimmedOrEmptyIfNull(@CheckForNull text) { ... }
...
@Nonnull
private String message;
...
message = truncate(trimmedOrEmptyIfNull(e.getMessage()), 100);
这里的警告是误报,因为trimmedOrEmptyIfNull
被标记为@Nonnull
,因此truncate
将返回一个非空值,并且可以推断为@Nonnull
它本身。
有没有办法让 FindBugs 意识到返回值的可空性和参数之间的这种联系?