是否需要对用javax.inject.inject注释的字段进行空检查

是否需要对用javax.inject.inject注释的字段进行空检查,java,spring,dependency-injection,annotations,inject,Java,Spring,Dependency Injection,Annotations,Inject,我有一个类,其中我使用javax.inject.injectannotation注入了一个字段 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;

我有一个类,其中我使用
javax.inject.inject
annotation注入了一个字段

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
check?为什么呢?答案是:这要看情况而定

如果您认为存在有效的场景,其中注入过程不会注入null,那么您确实需要该检查。如果您认为这永远不会发生,那么您可能会在运行时得到一个NPE;然后再次;你必须自己判断这种行为在你的环境中是否“合适”(以及如何处理)


但我宁愿努力使该字段成为最终字段,并将注释放在构造函数上;然后您可以在传入参数上放置一个
Objects.requirennull()
检查;稍后,您将确定的任何Foo对象都是空的

我不确定。我会使用一个可注入的构造函数到最后一个字段。谢谢你的接受。让我知道,如果有什么我可以做的,使我的答案值得在你的眼睛,像添加其他信息。。。