这个问题并不完全清楚,但这里简要描述了您可以在对象中初始化数据的方法。假设您有一个包含对象列表的类 A。
1) 将初始值放入字段声明中:
class A {
private List<Object> data = new ArrayList<Object>();
}
2) 在构造函数中赋值:
class A {
private List<Object> data;
public A() {
data = new ArrayList<Object>();
}
}
这些都假设您不想将“数据”作为构造函数参数传递。
如果您将重载的构造函数与上面的内部数据混合在一起,事情就会变得有些棘手。考虑:
class B {
private List<Object> data;
private String name;
private String userFriendlyName;
public B() {
data = new ArrayList<Object>();
name = "Default name";
userFriendlyName = "Default user friendly name";
}
public B(String name) {
data = new ArrayList<Object>();
this.name = name;
userFriendlyName = name;
}
public B(String name, String userFriendlyName) {
data = new ArrayList<Object>();
this.name = name;
this.userFriendlyName = userFriendlyName;
}
}
注意这里有很多重复的代码。你可以通过让构造函数相互调用来解决这个问题,或者你可以有一个私有的初始化方法,每个构造函数都调用:
class B {
private List<Object> data;
private String name;
private String userFriendlyName;
public B() {
this("Default name", "Default user friendly name");
}
public B(String name) {
this(name, name);
}
public B(String name, String userFriendlyName) {
data = new ArrayList<Object>();
this.name = name;
this.userFriendlyName = userFriendlyName;
}
}
或
class B {
private List<Object> data;
private String name;
private String userFriendlyName;
public B() {
init("Default name", "Default user friendly name");
}
public B(String name) {
init(name, name);
}
public B(String name, String userFriendlyName) {
init(name, userFriendlyName);
}
private void init(String _name, String _userFriendlyName) {
data = new ArrayList<Object>();
this.name = name;
this.userFriendlyName = userFriendlyName;
}
}
两者(或多或少)等价。
我希望这能给您一些关于如何初始化对象中的数据的提示。我不会谈论静态初始化块,因为目前这可能有点高级。
编辑:我将您的问题解释为“我如何初始化我的实例变量”,而不是“初始化程序块如何工作”,因为初始化程序块是一个相对先进的概念,从问题的语气看来你'重新询问更简单的概念。我可能是错的。