【问题标题】:Eclipse null type safety is wrong on return valueEclipse null 类型安全在返回值上是错误的
【发布时间】:2013-08-31 09:50:21
【问题描述】:

Eclipse 好像分析错了,方法 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;
  }    
}

【问题讨论】:

  • 真的是“字符串类型的表达式”吗?

标签: java eclipse eclipse-jdt non-nullable


【解决方案1】:

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

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

【讨论】:

  • mmh,所以任何延迟初始化都会给出警告?在这种模式下,您需要始终使用局部变量。
  • @user2735261:我看不出延迟初始化的使用与使用局部变量有什么关系。
【解决方案2】:

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

   @NonNull
   public Object o;

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

【讨论】:

    猜你喜欢
    • 2017-04-22
    • 1970-01-01
    • 2021-05-02
    • 2021-07-25
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    相关资源
    最近更新 更多