Java 在哪里初始化字段更好?
在哪里初始化字段更好?在构造函数(变量1)中还是在声明(变量2)中 变量1Java 在哪里初始化字段更好?,java,android,Java,Android,在哪里初始化字段更好?在构造函数(变量1)中还是在声明(变量2)中 变量1 public class UtilWebLoading { private int data; private Context context; public UtilWebLoading(Context context) { this.context = context; data = 100; } ... } 变量2 public class UtilWebLoading { private in
public class UtilWebLoading {
private int data;
private Context context;
public UtilWebLoading(Context context) {
this.context = context;
data = 100;
}
...
}
变量2
public class UtilWebLoading {
private int data = 100;
private Context context;
public UtilWebLoading(Context context) {
this.context = context;
}
...
}
在变量1中,上下文已启动,而在变量2中,它将为空!
使用第一个。我个人更喜欢在有足够上下文的情况下初始化字段。例如,如果我有一个
列表
字段,我通常在声明时初始化它(除非类要求用户传递他们选择的实现),但是如果我有一个数组需要传递一个大小,我就不得不等待构造函数调用
因此,在您的情况下,第二个代码段没有足够的上下文在声明时初始化
Util
,因为不存在有效的context
成员。我认为您应该寻找一个更好的示例,例如没有构造函数参数的列表成员,因为在这种情况下,没有真正的选择,因为示例2是错误的。它的可能副本不会运行,但如果他将上下文放在Var2中的Util之上。它将运行,但具有空值。