java - java应该在 jar305.jar 中注释,比如 annotation.jar 中的类似注释?

  显示原文与译文双语对照的内容
105 3

中,annotations.jar 是 ,而不是的子集。 然而,一些注释似乎是重复的( 或者非常精确或者非常接近) 。 如果我有选择的话,我应该在 jsr305.jar 中选择注释?

请注意,我不仅仅感兴趣,因为它只是因为它们代表一个标准而使用"更佳"来使用注释。 相反,我想知道,如果我喜欢一个特定注释的jsr305.jar 版本,那么of是否会执行相同的( 或者更好) 分析。 可能是一些 jsr305.jar 注释应该是首选的,但其他的则不应该。

我使用的是 FindBugs 1.3.9,它是最新版本的,这是本文的内容。 使用这里版本,我可以看到以下选项( 。请更新这里表,如果有其他表):

edu.umd.cs.findbugs.annotations.CheckForNull → javax.annotation.CheckForNull
edu.umd.cs.findbugs.annotations.CheckReturnValue → javax.annotation.CheckReturnValue
edu.umd.cs.findbugs.annotations.NonNull → javax.annotation.Nonnull ( NB大小写)
edu.umd.cs.findbugs.annotations.Nullable → javax.annotation.Nullable
edu.umd.cs.findbugs.annotations.When → javax.annotation.meta.When

此外,所有的JCIP注释都是重复的:

net.jcip.annotations.GuardedBy → javax.annotation.concurrent.GuardedBy
net.jcip.annotations.Immutable → javax.annotation.concurrent.Immutable
net.jcip.annotations.NotThreadSafe → javax.annotation.concurrent.NotThreadSafe
net.jcip.annotations.ThreadSafe → javax.annotation.concurrent.ThreadSafe

时间: 原作者:

134 1

是,如果可能,你应该更喜欢JSR305注释。 为什么因为JSR305是一个标准,而且在可以能的情况下总是有意义的。 在移植自己的应用程序时,我没有注意到任何问题或者行为变化。 此外,你甚至可以定义自己的@NotNull 注释,findbugs将获取它的( 只要你把它 NAME ),查看这个博客条目了解更多细节。

从查看源代码来看,findbugs在内部使用相同的分析方法。 仅基于注释 NAME 进行调度。 如上所述,上面链接的链接,查看的edu.umd.cs.findbugs.ba.NullnessAnnotation 和英镑NullnessAnnotationDatabase类,以获得在内部如何完成这一任务的初始视图。 查看这个包,你会发现类似于jcip的其他注释类。

所以从一个实现的角度来看,它并不重要。 对于仍然不确定使用哪种注释的人我会考虑使用标准注释或者自定义的注释来避免它们的代码依赖于findbugs库。

原作者:
...