jjzjj

java - 我是否需要在实现时再次@Nonnull?

虽然我认为应该有一个关于是否继承注释的通用规则,但我特别感兴趣的是让FindBugs识别我的规则,所以这个问题是FindBugs特定的。据我所知,JavaDoc注释取自接口(interface)并在实现时被忽略。这个概念是否也适用于像@Nonnull(或@NotNull)这样的注解?鉴于@Override注释,至少可以添加接口(interface)中不存在的额外注释。在下列情况下会发生什么?FindBugs会识别所有这些吗?关于整洁代码,哪一个是首选?接口(interface)@Nonnull,实现@Override接口(interface)@Nonnull,实现@Override,@

java - Objects::nonNull 和 x -> x != null 之间有什么区别吗?

考虑以下类:importjava.util.Objects;importjava.util.function.Predicate;publicclassLambdaVsMethodRef{publicstaticvoidmain(String[]args){Predicatea=Objects::nonNull;Predicateb=x->x!=null;}}第一个谓词是从方法引用创建的,另一个是lambda表达式。这些谓词具有相同的行为(nonNull的主体只是returnobj!=null;)。lambda短了两个字符(可能允许流管道适合一行)。除了代码风格,Objects::no

java - NonNull Lombok 构建器属性的 FindBugs 检测器

我有很多使用Lombok构建器的带有@NonNull字段的类。@BuilderclassSomeObject{@NonNullStringmandatoryField1;@NonNullStringmandatoryField2;IntegeroptionalField;...}但是,这使调用者可以选择在不设置mandatoryField的情况下创建对象,这在使用时会导致运行时失败。SomeObject.builder().mandatoryField1("...")//NotsettingmandatoryField2.build();我正在寻找在构建时捕获这些错误的方法。有非Lom

javax.annotation.Nonnull 与断言

我在方法参数上使用了Findbugs和javax.annotation.Nonnull。在私有(private)方法上,我通常添加一个断言行来检查是否为空privatevoidmyMethod(@NonnullStringstr){assertstr!=null....最新的Netbeans版本(7.3rc2)报告说断言检查不是必需的(因为Nonnull注释)。我不确定这是否是Netbeans错误。是否可以删除断言行,因为我指定了@Nonnull注释?据我所知,注释仅在静态分析期间使用,而断言在启用时在执行期间处于Activity状态,因此两者不可替代。 最

Java—Objects.nonNull()

Objects.nonNull()是Java7中java.util.Objects类提供的一个静态方法,用来判断指定引用是否为null。如果引用为null,则抛出一个NullPointerException异常;否则返回该对象本身。以下是代码示例:importjava.util.Objects;publicclassExample{publicstaticvoidmain(String[]args){Stringstr="Hello,world!";StringnullStr=null;//检查非空引用并返回对象本身Stringresult=Objects.nonNull(str);Syste

java - 如何表示成员字段默认为@Nonnull?

我的问题是thisone的后续问题。.在过去的FindBugs版本中,可以使用@DefaultAnnotation(Nonnull.class)或@DefaultAnnotationForFields(Nonnull.class)来指示所有包中的字段应被视为@Nonnull。在当前版本的FindBugs(2.0)中,@DefaultAnnotation和@DefaultAnnotationForFields已被弃用,我们都应该改用JSR-305。但JSR-305似乎并未涵盖(现已弃用)FindBugs注释所涵盖的所有内容。javadoc确实提出了一些替代方案:@ParametersAr

java - 如何表示成员字段默认为@Nonnull?

我的问题是thisone的后续问题。.在过去的FindBugs版本中,可以使用@DefaultAnnotation(Nonnull.class)或@DefaultAnnotationForFields(Nonnull.class)来指示所有包中的字段应被视为@Nonnull。在当前版本的FindBugs(2.0)中,@DefaultAnnotation和@DefaultAnnotationForFields已被弃用,我们都应该改用JSR-305。但JSR-305似乎并未涵盖(现已弃用)FindBugs注释所涵盖的所有内容。javadoc确实提出了一些替代方案:@ParametersAr

java - org.eclipse.jdt.annotation.NonNull 类型无法解析。它是从所需的 .class 文件中间接引用的

当我将Java8方法引用双冒号运算符(::)与new运算符(例如MyType::new)一起使用时,我在Eclipse中收到此错误Spring工具套件(STS):Thetypeorg.eclipse.jdt.annotation.NonNullcannotberesolved.Itisindirectlyreferencedfromrequired.classfiles如何摆脱这个错误? 最佳答案 StephanHerrmann的评论中提供了错误描述。有开放Eclipseissue使这个问题对用户更友好。解决方案是包含以下依赖项:o

java - org.eclipse.jdt.annotation.NonNull 类型无法解析。它是从所需的 .class 文件中间接引用的

当我将Java8方法引用双冒号运算符(::)与new运算符(例如MyType::new)一起使用时,我在Eclipse中收到此错误Spring工具套件(STS):Thetypeorg.eclipse.jdt.annotation.NonNullcannotberesolved.Itisindirectlyreferencedfromrequired.classfiles如何摆脱这个错误? 最佳答案 StephanHerrmann的评论中提供了错误描述。有开放Eclipseissue使这个问题对用户更友好。解决方案是包含以下依赖项:o

java - 在 Android Studio 中使用 @NonNull 注解的正确方法

我想在Android中使用@NonNull注释,但我想不出正确的方法。我建议你这个例子:publicvoiddoStuff(@NonNullStrings){//doworkwiths...}所以当我调用doStuff(null)时,IDE会给我一个警告。问题是我不能依赖这个注释,因为像this问题指出,它们不会传播很远。所以我想对我的方法进行空检查,如下所示:if(s==null)thrownewIllegalAgrumentException();但假设s!=null的IDE会警告我s==null始终为假。我想知道最好的方法是什么。我个人认为应该有一个像@ShouldntBeNul