标记为javax.inject.Inject的字段需要进行null检查吗?

3

我有一个类,我使用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检查?为什么?

我不确定。我会使用可注入的构造函数到一个final字段。 - Michael
谢谢接受。如果您认为我回答的有价值,请告诉我是否需要添加其他信息来使我的回答更值得点赞。 - GhostCat
1个回答

0

答案是:这取决于情况。

如果你认为有有效的场景,注入过程不会注入null,那么你需要进行检查。如果你认为这种情况永远不会发生,那么你可能最终会在运行时遇到NPE;然后,你必须自己确定这种行为在你的上下文中是否“适当”(以及如何处理它)。

但我更倾向于使该字段成为final,并在构造函数上放置注释;然后你只需在传入参数上放置Objects.requireNonNull()检查;之后,你可以确信任何Foo对象都是无null的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接