Java Eclipse空类型安全性在返回值上出错
Eclipse似乎做了错误的分析,方法test1是正确的,但方法test2给出了错误: 空类型安全:类型字符串的表达式需要未经检查的转换才能符合@NonNullJava Eclipse空类型安全性在返回值上出错,java,eclipse,eclipse-jdt,non-nullable,Java,Eclipse,Eclipse Jdt,Non Nullable,Eclipse似乎做了错误的分析,方法test1是正确的,但方法test2给出了错误: 空类型安全:类型字符串的表达式需要未经检查的转换才能符合@NonNull public class TestCase { public Object o; @NonNull public Object test1() { Object local = new Object(); return local; } @NonNull public Object
public class TestCase {
public Object o;
@NonNull
public Object test1() {
Object local = new Object();
return local;
}
@NonNull
public Object test2() {
o = new Object();
return o;
}
}
我怀疑问题在于您返回的值可能已被其他线程更改。基本上,该方法可以返回空引用。您可以通过使用临时变量来避免这种情况:
@NonNull
public Object test2() {
Object tmp = new Object();
o = tmp;
return tmp;
}
在Eclipse4.3中,您现在可以对类成员使用
@NonNull
,因此您可以说
@NonNull
public Object o;
这将停止警告-但您最好确保成员已实际初始化 它真的说“字符串类型的表达式”?嗯,那么任何延迟初始化都会给出警告?在这种模式下,您需要始终使用局部变量。@user2735261:我不明白延迟初始化的使用与局部变量的使用有什么关系。