Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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_Arrays_Object_Null_Initialization - Fatal编程技术网

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(

Java除了给引用变量赋值外,没有初始化引用变量的方法。您也许可以通过地图接近您想要的东西:

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);