英文:
eclipse GetAnnotation returns @NonNull
问题
我正在尝试使用 Eclipse 的 org.eclipse.jdt.annotation.NonNull
注解,但我不明白这段代码的含义。
方法签名:
@NonNull MyAnnotation java.lang.reflect.Field.getAnnotation(Class<@NonNull MyAnnotation> annotationClass)
循环部分:
if(field.getAnnotation(MyAnnotation.class)!=null)
continue;
Eclipse 声明以下代码为死代码:
try{
为什么 Eclipse 认为 getAnnotation
方法返回的是 @NonNull
?文档明确说明它可以返回 null
。
我已经通过调试器验证了代码不是死代码,在步进中进行了验证。
编辑:
我没有在任何包上使用 @NonNullByDefault
。
我尝试过:
- 在
MyAnnotation
上添加@Nullable
,但收到了The nullness annotation 'Nullable' is not applicable at this location
的错误。 @Nullable MyAnnotation n=field.getAnnotation(MyAnnotation.class);
仍然是同样的问题。
英文:
I am trying to use the Eclipse org.eclipse.jdt.annotation.NonNull
annotations and i don't understand this
method signature:
@NonNull MyAnnotation java.lang.reflect.Field.getAnnotation(Class<@NonNull MyAnnotation> annotationClass)
for loop:
if(field.getAnnotation(MyAnnotation.class)!=null)
continue;
Eclipse declares the following code dead code
try{
Why does eclipse think the getAnnotation
class returns @NonNull
?
The docs clearly state it can return null
.
I have verified via a debugger that the code is not dead, stepping trough.
EDIT:
I do not use @NonNullByDefault on any package
I tried:
- adding
@Nullable
to MyAnnotation, i getThe nullness annotation 'Nullable' is not applicable at this location
@Nullable MyAnnotation n=field.getAnnotation(MyAnnotation.class);
still same problem
答案1
得分: 0
通过添加第一行代码来消除警告:
Class<MyAnnotation> c = MyAnnotation.class;
if (field.getAnnotation(c) != null)
continue;
之后,我不再收到死代码警告。
不知何故,Eclipse 自动将 @NonNull 注解添加到 MyAnnotation 中。
英文:
Got rid of the warning by adding the first line:
Class<MyAnnotation> c = MyAnnotation.class;
if(field.getAnnotation(c)!=null)
continue;
After that i do not get the dead code warning.
Somehow Eclipse is adding the @NonNull annotation automatically to MyAnnotation.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论