我遇到了这个Java代码,我有点困惑。
以下是代码
public ArrayList<GalleryItem> fetchItems() {
ArrayList<GalleryItem> items = new ArrayList<GalleryItem>();
try {
....
parseItems(items, parser);
} catch (IOException ioe) {
Log.e(TAG, "Failed to fetch items", ioe);
} catch (XmlPullParserException xppe) {
Log.e(TAG, "Failed to parse items", xppe);
}
return items;
}
void parseItems(ArrayList<GalleryItem> items, XmlPullParser parser) throws XmlPullParserException, IOException {
int eventType = parser.next();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG &&
....
item.setId(id);
item.setCaption(caption);
item.setUrl(smallUrl);
items.add(item);
...
}
eventType = parser.next();
}
}
我需要知道的是:在上面的代码中,项目被传递给void parseitems(...)
方法。如您所见,parseitems
方法的返回类型为void
。解析后,fetchItems
方法中的项目获得了值。这怎么可能?请解释
答案 0 :(得分:4)
你必须知道在java中,对象通过引用传递给方法。这意味着parseItems
正在更改其本地引用所指向的实际Object。
实际上真实的故事更有趣:实际传递给方法的参数是值的引用。