7

注意:我所说的那些注释是由 JSR305 指定的。

我有最新的 Findbugs (1.3.9), 当某些用 @Nonnull 注释的字段被分配为 null 时,它会正确发现错误。

但是,在我的项目中,“非空逻辑”是默认情况。我会说 null 仅在 5% 的情况下被明确允许

因此,用@Nonnull 注释 95% 的字段会非常不方便。我宁愿用 @Nullable 注释这 5% 的字段。

我试图用@Nonnull 注释整个包,它不会改变任何东西。

那么,以某种方式可以指定默认逻辑吗?

4

2 回答 2

1

我不确定 Fiundbug 是否可以处理以下注释,但是如果您想用“NonNull”注释所有包,您可能需要使用:

@ParametersAreNonnullByDefault

/**
 * This annotation can be applied to a package, class or method to indicate that
 * the method parameters in that element are nonnull by default unless there is:
 * <ul>
 * <li>An explicit nullness annotation
 * <li>The method overrides a method in a superclass (in which case the
 * annotation of the corresponding parameter in the superclass applies)
 * <li> there is a default parameter annotation applied to a more tightly nested
 * element.
 * </ul>
 * 
 */
@Documented
@Nonnull
@TypeQualifierDefault(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface ParametersAreNonnullByDefault {
}

另请参阅这篇文章

注意:至少该注释存在于一些 FindBugs 测试用例中。

于 2009-09-30T10:50:38.063 回答
0

FindBugs 现在有@ReturnValuesAreNonnullByDefault。它还有@DefaultAnnotation、@DefaultAnnotationForFields、@DefaultAnnotationForMethods 和@DefaultAnnotationForParameters。

但我应该声明我没有在我的项目中使用任何这些..

于 2011-10-24T17:35:45.363 回答