是的,如果可能的话,您应该首选JSR305批注。为什么?由于JSR305是标准,因此在可能的情况下遵守该标准是很有意义的。在移植自己的应用程序时,我没有发现任何问题或行为改变。此外,您甚至可以定义自己的@NotNull批注,并且findbugs会选择它(只要您将其命名为NotNull),请参阅此博客条目以获取更多详细信息。
据查看源代码所见,findbugs在内部使用相同的分析方法。仅基于注释名称进行分派。如上面链接的博客文章所述,请查看edu.umd.cs.findbugs.ba.NullnessAnnotation和NullnessAnnotationDatabase类,以初步了解如何在内部完成此操作。看看这个包,您会发现类似jcip的其他注释的相似类。
因此,从实现的角度来看,这并不重要。对于每个仍然不确定要使用哪些注释的人,我会考虑使用标准注释或自定义注释,以避免其代码依赖于findbugs库。



