10. 注解

师成师成· 更新于 2026-09-28· 阅读 7 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

10. 注解

FindBugs 支持若干注解,用于表达开发者的意图,以便 FindBugs 能够更恰当地发出警告。要使用注解,你需要使用 Java 5,并且在编译程序时必须将 annotations.jar 和 jsr305.jar 文件放入 classpath 中。

edu.umd.cs.findbugs.annotations.CheckForNull

[目标] 字段、方法、参数

被注解的元素可能为 null,对该元素的使用应当进行 null 检查。当此注解应用于方法时,它作用于该方法的返回值。

edu.umd.cs.findbugs.annotations.CheckReturnValue

[目标] 方法、构造函数

[参数]

**priority:**警告的优先级(HIGH、MEDIUM、LOW、IGNORE)。默认值:MEDIUM。

**explanation:**说明为何需要检查返回值的文本描述。默认值:""。

此注解用于标记那些在调用之后必须始终检查其返回值的方法。

edu.umd.cs.findbugs.annotations.DefaultAnnotation

[目标] 类型、包

[参数]

**value:**注解类对象。可以指定多个类。

**priority:**默认优先级(HIGH、MEDIUM、LOW、IGNORE)。默认值:MEDIUM。

表示该类或包的所有成员都应使用所提供的注解类的默认值进行注解。这适用于诸如 @NonNull、@CheckForNull 或 @CheckReturnValue 之类的行为注解。特别地,你可以在类或包上使用 @DefaultAnnotation(NonNull.class),然后仅在你希望允许为 null 的那些参数、方法或字段上使用 @Nullable。

edu.umd.cs.findbugs.annotations.DefaultAnnotationForFields

[目标] 类型、包

[参数]

**value:**注解类对象。可以指定多个类。

**priority:**默认优先级(HIGH、MEDIUM、LOW、IGNORE)。默认值:MEDIUM。

与 DefaultAnnotation 相同,但仅适用于字段。

edu.umd.cs.findbugs.annotations.DefaultAnnotationForMethods

[目标] 类型、包

[参数]

**value:**注解类对象。可以指定多个类。

**priority:**默认优先级(HIGH、MEDIUM、LOW、IGNORE)。默认值:MEDIUM。

与 DefaultAnnotation 相同,但仅适用于方法。

edu.umd.cs.findbugs.annotations.DefaultAnnotationForParameters

[目标] 类型、包

[参数]

**value:**注解类对象。可以指定多个类。

**priority:**默认优先级(HIGH、MEDIUM、LOW、IGNORE)。默认值:MEDIUM。

与 DefaultAnnotation 相同,但仅适用于方法参数。

edu.umd.cs.findbugs.annotations.NonNull

[目标] 字段、方法、参数

被注解的元素不得为 null。被注解的字段在构造完成后不得为 null。被注解的方法必须返回非 null 的值。

edu.umd.cs.findbugs.annotations.Nullable

[目标] 字段、方法、参数

被标注的元素在某些情况下可能为 null。通常这意味着开发者必须阅读文档,以确定何时可以接受 null 值,以及是否需要检查 null 值。FindBugs 会将被标注的项视为没有任何标注。

实际上,该注解仅用于覆盖总体的 NonNull 注解。

edu.umd.cs.findbugs.annotations.OverrideMustInvoke

[目标] 方法

[参数]

value: 指定何时应执行父类调用(FIRST、ANYTIME、LAST)。默认值:ANYTIME。

用于标注一个方法,该方法如果被重写,则必须(或应该)在重写方法中调用父类实现。此类方法的示例包括 finalize() 和 clone()。该方法的参数表示父类调用应在何时发生:在任何时间、在重写方法的开头,或在重写方法的结尾。(截至 2006 年 9 月 8 日,FindBugs 尚未实现此注解)。

edu.umd.cs.findbugs.annotations.PossiblyNull

此注解已弃用。请改用 CheckForNull。

edu.umd.cs.findbugs.annotations.SuppressWarnings

[目标] 类型、字段、方法、参数、构造函数、包

[参数]

value: 警告的名称。可以指定多个名称。

justification: 应忽略该警告的原因。默认值:""。

在被标注的元素中应由编译器抑制的警告集合。允许出现重复的名称。同一名称的第二次及后续出现将被忽略。出现无法识别的警告名称并不是错误:编译器必须忽略它们无法识别的任何警告名称。不过,如果注解中包含无法识别的警告名称,编译器可以自行决定是否发出警告。编译器供应商应当记录与该注解类型配合使用的警告名称。鼓励各方合作,以确保相同的名称在多种编译器中都能正常工作。

edu.umd.cs.findbugs.annotations.UnknownNullness

[目标] 字段、方法、参数

用于表示目标的可空性未知,或者在子类中可能以未知的方式发生变化。

edu.umd.cs.findbugs.annotations.UnknownNullness

[目标] 字段、方法、参数

用于表示目标的可空性未知,或者在子类中可能以未知的方式发生变化。

FindBugs 还支持以下注解:

  • net.jcip.annotations.GuardedBy
  • net.jcip.annotations.Immutable
  • net.jcip.annotations.NotThreadSafe
  • net.jcip.annotations.ThreadSafe

你可以参考 Java Concurrency in Practice 网站上的 JCIP 注解 API 文档。

评论

登录后参与评论

正在加载评论…