为什么我的方法返回一个空数组?

时间:2015-03-22 03:38:30

标签: java arrays object foreach null

我正在使用foreach循环迭代一个空数组,并用对象填充它。 “Case”是一个具有多种方法和属性的类。

我的代码如下所示:

public class Test {

private Case [] list = new Case[5];

public Case [] test(){
    for(Case myCase : list){
        myCase = new Case(); 
    }

    return list; //This list contains 5 nulls, but should contain five "Case" objects.
}

public static void main(String[] args){
    Test myTest = new Test();
    myTest.test();
}}

当我希望它包含5个实例化的“Case”对象时,从我的方法返回的列表包含5个空值。我怀疑这可能是某种可见性问题,但我无法弄明白。

2 个答案:

答案 0 :(得分:9)

for-each循环中使用的变量只是对数组元素当前值的引用。分配给该变量不会影响存储在数组中的值。你需要像这样使用for循环:

for (int i = 0; i < list.length; i++) {
    list[i] = new Case();
}

答案 1 :(得分:0)

另外, 您不需要从test()方法显式返回列表,因为它是myTest中的一个字段。

这样可以很好地完成,

public void test(){
            for(int i=0;i<5;i++){
                this.list[i] = new Case(); 
            }
        }