是否需要对用 javax.inject.Inject 注释的字段进行空检查
Is null check of field annotated with javax.inject.Inject required
我有一个 class,我在其中使用 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
检查?为什么?
答案是:视情况而定。
如果您认为存在注入过程不会注入 null 的有效场景,那么您确实需要进行检查。如果您认为这永远不会发生,那么您可能会在运行时遇到 NPE;然后再一次;你必须自己弄清楚这种行为在你的上下文中是否 "appropriate" (然后 what/how 来处理它)。
但我宁愿努力使该字段成为最终字段并将注释放在构造函数上;然后你可以对传入的参数进行 Objects.requireNonNull()
检查;并且您稍后可以确定的任何 Foo 对象都是 null free.
我有一个 class,我在其中使用 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
检查?为什么?
答案是:视情况而定。
如果您认为存在注入过程不会注入 null 的有效场景,那么您确实需要进行检查。如果您认为这永远不会发生,那么您可能会在运行时遇到 NPE;然后再一次;你必须自己弄清楚这种行为在你的上下文中是否 "appropriate" (然后 what/how 来处理它)。
但我宁愿努力使该字段成为最终字段并将注释放在构造函数上;然后你可以对传入的参数进行 Objects.requireNonNull()
检查;并且您稍后可以确定的任何 Foo 对象都是 null free.