使用方法和参数创建ArrayList是ArrayList的名称

时间:2014-04-11 15:36:53

标签: java arraylist

我的问题很简单,但在任何地方都找不到答案,我怎样才能创建这样的数组:

public ArrayList<ArrayList<String>> result_of_query_into_array(
        ArrayList<String> nameofArray) {

    nameofArray = new ArrayList<String>();

    try {
        while (result.next()) {

            nameofArray.add(result.getString("nombre_estadio"));
            nameofArray.add(result.getString("ciudad"));
            nameofArray.add(result.getString("capacidad"));
            nameofArray.add(result.getString("temperatura"));
            nameofArray.add(result.getString("equipos"));

        }
    } catch (SQLException e) {

        JOptionPane.showMessageDialog(null,
                "Error en result.next().print..: " + e);
    }

    ARRAY_PRINCIPAL_MULTIDIMENSIONAL.add(nameofArray);

    JOptionPane.showMessageDialog(null, "got all rows  from table  ");

    return ARRAY_PRINCIPAL_MULTIDIMENSIONAL;

}

所以当我使用这种方法时,我必须这样做:

ArrayList<String> myArray = new ArrayList<String>();

obj.result_ofquery_into_array(myArray);

只做以下事情是可行的:

obj.result_of_query_into_array(myarrayWithoutInstantiatingOutside);

当我只放入数组的名称时,我得到一个错误:

myarrayWithoutInstantiatingOutside cannot be resolved to a variable

请帮忙,谢谢

1 个答案:

答案 0 :(得分:0)

因为当您将变量作为参数传递时,实际上是传递了一个对象的引用,然后使用该对象。不初始化变量时,您传递的是空引用,无法解析。在你的例子中,正确的方法是这样做,因为无论如何你要覆盖变量的值,将是:

public ArrayList<ArrayList<String>> result_of_query_into_array() {

    ArrayList<String> nameOfArray = new ArrayList<String>();

    // Logic...

    return nameOfArray;

}

然后就这样做:

myarrayWithoutInstantiatingOutside = obj.result_of_query_into_array();

然后,您将实例化方法内的对象,然后返回引用。

变量

您必须将变量视为简单的地址。例如,让我们走一条街上的房子吧。

123 StackOverflow street

现在,这个地址可能是你朋友的地址:

Adress myFriendAddress = 123 StackOverflow street

但对于其他人来说,可能是他老板的地址:

Adress myBossAddress = 123 StackOverflow street

房子的物理位置是相同的,但参考不同。它与对象和变量的方式相同。该对象有一个内存地址,它是内存中对象的物理位置。