Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在哪里初始化字段更好?_Java_Android - Fatal编程技术网

Java 在哪里初始化字段更好?

Java 在哪里初始化字段更好?,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

在哪里初始化字段更好?在构造函数(变量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 int data = 100;
private Context context;

public UtilWebLoading(Context context) {
    this.context = context;
}
...
}

在变量1中,上下文已启动,而在变量2中,它将为空!
使用第一个。

我个人更喜欢在有足够上下文的情况下初始化字段。例如,如果我有一个
列表
字段,我通常在声明时初始化它(除非类要求用户传递他们选择的实现),但是如果我有一个数组需要传递一个大小,我就不得不等待构造函数调用


因此,在您的情况下,第二个代码段没有足够的上下文在声明时初始化
Util
,因为不存在有效的
context
成员。

我认为您应该寻找一个更好的示例,例如没有构造函数参数的列表成员,因为在这种情况下,没有真正的选择,因为示例2是错误的。它的可能副本不会运行,但如果他将上下文放在Var2中的Util之上。它将运行,但具有空值。