我有一个课程,我使用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
检查?为什么?
答案 0 :(得分:0)
答案是:这取决于。
如果认为存在有效的方案,其中注入过程不会注入 null ,那么您需要进行检查。如果您认为永远不会发生这种情况,那么您可能最终会在运行时使用NPE;再一次;你必须自己想一想,如果这种行为是适当的"在你的背景下(以及如何处理它)。
但我宁愿努力使该字段最终并将注释放在构造函数上;然后你可以对传入的参数进行Objects.requireNonNull()
检查;你后来确定任何Foo对象都是 null free 。