[英]How to remove 'nullness annotation is redundant' warning when using @NonNullByDefault and arrays? (Eclipse, NullAnnotation)
我得到错误
Null type safety (type annotations): The expression of type 'String' needs unchecked conversion to conform to '@NonNull String'
在此类的陈述A:
package org.abego.util;
public class MyClass {
private String[] names = new String[]{"Alice", "Bob", "Charlie"};
public String getName(int index) {
String name = names[index];
return name; /* statement A */
}
}
软件包org.abego.util
将默认的空org.abego.util
定义为“ @NonNull”:
@org.eclipse.jdt.annotation.NonNullByDefault
package org.abego.util;
将@NonNull
添加到数组定义时:
package org.abego.util;
import org.eclipse.jdt.annotation.NonNull;
public class MyClass {
private @NonNull String[] names = new @NonNull String[]{"Alice", "Bob", "Charlie"};
public String getName(int index) {
String name = names[index];
return name; /* statement A */
}
}
语句A的警告消失了,但是我收到了新的警告
The nullness annotation is redundant with a default that applies to this location
数组定义中的@NonNull String[]
类型。
我发现没有办法使此代码免于警告。
“冗余”警告可能是错误的吗? 据我了解, NonNullByDefault
声明将确保类型定义String[]
将解释为String @NonNull[]
,而不是@NonNull String[]
或@NonNull String @NonNull[]
。 因此,@ @NonNull String[]
的显式无效注释不是多余的,而是获得有效类型@NonNull String @NonNull[]
。
(我正在使用Eclipse 4.5(火星)和jdk1.8.0_60。)
您的期望是正确的。 @NonNullBeDefault
不会影响数组类型的任何详细信息(除非您在注释的值中包含DefaultLocation.ARRAY_CONTENTS )。
我相信这是https://bugs.eclipse.org/440398的变体
感谢您的简洁示例,顺便说一句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.