我的问题很简单,但在任何地方都找不到答案,我怎样才能创建这样的数组:
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
请帮忙,谢谢
答案 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
房子的物理位置是相同的,但参考不同。它与对象和变量的方式相同。该对象有一个内存地址,它是内存中对象的物理位置。