我对Java有一个非常基本的疑问。
这是我写的代码。通过包A 中 A类中的方法,我尝试实例化不同包的类b的对象并调用其方法,我通过了一个清单。
parseObjectList = new ArrayList<ParseObject>();
pullAllService.pullAllData(queryType,parseObjectList);
在函数中我做了一些操作:
public void pullAllData(String queryType,List<ParseObject> parseObjectList)
{
ParseQuery<ParseObject> query = null;
List<ParseObject> parseObjects = parseObjectList;
if(queryType.equals("a"))
{
query = new ParseQuery<ParseObject>("a");
}
else if(queryType.equals("b"))
{
query = new ParseQuery<ParseObject>("b");
}
try {
parseObjects = query.find(); //I get the list
/* final List<ParseObject> finalParseObjectList = parseObjectList;
curActivity.runOnUiThread(new Runnable() {
public void run() {
ToastMessageHelper.displayLongToast(curActivity, "Objects found : ");
for (int i = 0; i < finalParseObjectList.size(); i++) {
ToastMessageHelper.displayLongToast(curActivity, finalParseObjectList.get(i).get("Name").toString());
System.out.println();
}
}
});
*/
} catch (ParseException e) {
e.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
}
之后如果我尝试在A类方法中打印列表。我得到一个空列表。
但如果我这样做,
parseObjectList = new ArrayList<ParseObject>();
parseObjectList = pullAllService.pullAllData(queryType,parseObjectList);
并使其从pullAllData()返回列表(通过更改返回类型并返回列表),我得到包含预期数据的列表。
我认为只需将parseObjectList传递给函数,传递的参数就会作为参考,并自动分配给目标数据。这里有什么问题?
答案 0 :(得分:3)
Java是一种值传递语言。将List引用传递给方法允许该方法改变引用引用的List,但它不能更改传递给它的List引用的值。
您可以执行以下操作,将元素添加到传递给方法的列表中:
parseObjectList.addAll(query.find());