是否使用javax.inject.Inject注释的字段的空检查

时间:2017-03-08 15:14:35

标签: java spring dependency-injection annotations inject

我有一个课程,我使用javax.inject.Inject注释

注入了一个字段
import javax.inject.Inject;

public class Foo extends BaseFoo {
  @Inject
  private Bar bar;
  ...

  public void execute(){
    if (bar == null) {
      //log failure message and return
      return;
    }
    //Do your work..
  }
  ...
}

我的问题是,在上面的例子中,是否需要null检查?为什么?

1 个答案:

答案 0 :(得分:0)

答案是:这取决于。

如果认为存在有效的方案,其中注入过程不会注入 null ,那么您需要进行检查。如果您认为永远不会发生这种情况,那么您可能最终会在运行时使用NPE;再一次;你必须自己想一想,如果这种行为是适当的"在你的背景下(以及如何处理它)。

但我宁愿努力使该字段最终并将注释放在构造函数上;然后你可以对传入的参数进行Objects.requireNonNull()检查;你后来确定任何Foo对象都是 null free