有两个包(annotations.jar和jsr305.jar),每个包都有四个注释,以及不添加注释的选项.
解决方法
方法参数:
>参数不能为null:不要放任何注释.在这种情况下,如果将null传递给方法,则会出现错误标记. (我在预设@Nonnull注释时曾经预料到这种行为,但是当我把它放进去时,根本没有出现错误标记.)
>参数可以为null:放置@Nullable注释. (@CheckForNull的效果相同.@ Nullable documentation读取:“FindBugs会将带注释的项目视为没有注释.”这不是真的.如果我调用string.length()并且String字符串已被标记为@Nullable,它会导致出现错误标记,如果没有注释则没有显示错误标记.)
方法返回值:
>方法永远不会返回null:放置@Nonnull.如果您尝试返回null,则会导致错误标记;从方法内部.
>方法可以返回null:是否要强制检查它?如果返回值确实取决于只能在调用时可以假设的方法参数,则检查可能是开销,例如“如果参数1为负,则我的方法返回null”.在这种情况下我不会给出注释.但是,您可能需要考虑抛出IllegalArgumentException而不是返回null.
>方法可以返回null,并且应始终检查返回对象:放置@CheckForNull.但是,在许多情况下还有更好的方法,您可能需要考虑返回Collections.emptyList()而不是null列表,或抛出MissingResourceException,IOException或其他适当的异常.
要使用哪个JAR文件:
>两个jar文件都会导致FindBugs的相同行为,唯一的区别是annotations.jar中的注释在Eclipse中显示为已弃用.所以使用jsr305.jar.
>需要jar文件.使用给定的包和类名创建空注释不起作用.你可以get it here.