需要Java代码说明,方法void返回类型和调用方法变量

时间:2016-02-14 14:48:21

标签: java android return

我遇到了这个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方法中的项目获得了值。这怎么可能?请解释

1 个答案:

答案 0 :(得分:4)

你必须知道在java中,对象通过引用传递给方法。这意味着parseItems正在更改其本地引用所指向的实际Object。

实际上真实的故事更有趣:实际传递给方法的参数是值的引用。