Eclipse null类型安全性在返回值上是错误的

时间:2013-08-31 09:50:21

标签: java eclipse eclipse-jdt non-nullable

Eclipse似乎做错了analisys,方法test1没问题,但方法test2给出了错误:

空类型安全性:String类型的表达式需要未经检查的转换以符合@NonNull

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;
  }    
}

2 个答案:

答案 0 :(得分:4)

我怀疑问题在于您返回的值可能已被其他线程更改。基本上, 可能使该方法返回空引用。您可以使用临时变量来避免这种情况:

@NonNull
public Object test2()  {
    Object tmp = new Object();
    o = tmp;
    return tmp;
}    

答案 1 :(得分:1)

在Eclipse 4.3中,您现在可以在类成员上使用@NonNull,因此您可以说

   @NonNull
   public Object o;

将停止警告 - 但您最好确保该成员实际已初始化!