4

Eclipse 似乎做错了 analisys ,方法 test1 是好的,但是方法 test2 给出了错误:

Null 类型安全: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;
  }    
}
4

2 回答 2

4

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

@NonNull
public Object test2()  {
    Object tmp = new Object();
    o = tmp;
    return tmp;
}    
于 2013-08-31T09:56:56.077 回答
1

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

   @NonNull
   public Object o;

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

于 2013-08-31T10:24:43.130 回答