Java 如何初始化数组中的空对象?
Java除了给引用变量赋值外,没有初始化引用变量的方法。您也许可以通过地图接近您想要的东西:Java 如何初始化数组中的空对象?,java,arrays,object,null,initialization,Java,Arrays,Object,Null,Initialization,Java除了给引用变量赋值外,没有初始化引用变量的方法。您也许可以通过地图接近您想要的东西: mtOrders = new MyType(); mtCustomers = new MyType(); ... mtPrims = new MyType(); 如果这不能满足您的需要,您只需单独分配每个字段。Java除了分配给引用变量外,没有初始化引用变量的方法。您也许可以通过地图接近您想要的东西: mtOrders = new MyType(); mtCustomers = new MyType(
mtOrders = new MyType();
mtCustomers = new MyType();
...
mtPrims = new MyType();
如果这不能满足您的需要,您只需单独分配每个字段。Java除了分配给引用变量外,没有初始化引用变量的方法。您也许可以通过地图接近您想要的东西:
mtOrders = new MyType();
mtCustomers = new MyType();
...
mtPrims = new MyType();
如果这不能满足您的需要,您只需单独分配每个字段。
xTable
而该系列静态变量是不同的引用,可能指向同一对象,但不能用于相互修改。也就是说,它们都可以用来修改同一个对象,但是在一个对象上有一个点不会使另一个点也在该对象上
我不太明白你的实际目标。我能提供的最好的方法是使用一些他们都会指向的中级课程。因此,mtOrders
将不是一个MyType
,而是一个MyTypeRef
,它将有一个MyType
字段。然后,将其初始化为新的MyTypeRef
,并使用循环设置所有ref中的MyType
对象。由于静态变量和xTable
条目都指向相同的MyTypeRef
,因此在其中一个字段上设置MyType
字段也会影响另一个字段
在我看来,使用该循环而不是初始化每个单独的变量看起来像是更紧凑的代码,但它不起作用。只需再写几行代码,这样它就不那么漂亮了,但实际上可以工作。
xTable
而这一系列静态变量是不同的引用,可能指向同一个对象,但不能用于相互修改。也就是说,它们都可以用来修改同一个对象,但是在一个对象上有一个点不会使另一个点也在该对象上
我不太明白你的实际目标。我能提供的最好的方法是使用一些他们都会指向的中级课程。因此,mtOrders
将不是一个MyType
,而是一个MyTypeRef
,它将有一个MyType
字段。然后,将其初始化为新的MyTypeRef
,并使用循环设置所有ref中的MyType
对象。由于静态变量和xTable
条目都指向相同的MyTypeRef
,因此在其中一个字段上设置MyType
字段也会影响另一个字段
在我看来,使用该循环而不是初始化每个单独的变量看起来像是更紧凑的代码,但它不起作用。只需再写几行代码,这样它就不那么漂亮了,但实际上很有效。谢谢您的回答。我会按照埃兰的建议去做。谢谢你的回答。我会按照eran的建议去做。我对这个解决方案并不感兴趣,因为它为每个变量添加了一个额外的包装器,只是为了绕过一些初始化问题。但这是你的代码…我的初始化真的很复杂,比我显示的要复杂。我认为,向数组中添加新变量比复制粘贴大量代码更简单。我对这个解决方案不感兴趣,因为它为每个变量添加了一个额外的包装器,只是为了绕过一些初始化问题。但这是你的代码…我的初始化真的很复杂,比我显示的要复杂。我认为,向数组中添加新的var比复制粘贴许多行代码更简单。
public static final String myOrders = "mtOrders";
// etc.
public final static Map<String, MyType> xTable;
static {
HashMap<String, MyType> table = new HashMap<String, MyType>();
String[] keys = { myOrders, . . . }
for (int i = 0; i < keys.length; ++i) {
table.put(keys[i], new MyType());
}
xTable = Collections.unmodifiableMap(table);
}
MyType orders = xTable.get(myOrders);