我在我的動作類下面的代碼:List.addAll被複制會話變量
MemberData mbr = MyUtil.getMember(request.getSession());
:::::::::::::::::::::::
{
List sysList = mbr .getSystemList(); //returns 'systemList'
sysList.addAll(mbr .getUserEnteredList()); //add user entered to the system entered objects list
addWorksheetFor(wb, sysList); //add the list to an excel workbook
}
我有MemberData會話,它含有一種叫,說,SystemList中列表。當我使用List sysList = mbr.getSystemList()
並添加用戶輸入列表時,會話對象中的'systemList'被修改。我將這兩個列表添加到局部變量'sysList'中,但會話變量'systemList'也被修改。它變得和'sysList'一樣。
然而,當我通過SystemList中和userEnteredList迭代分開,並添加到第三列表如下所示:
MemberData mbr = MyUtil.getMember(request.getSession());
:::::::::::::::::::::::
{
List sysList = mbr .getSystemList(); //returns 'systemList'
List userList = mbr .getUserEnteredList(); //returns 'userEnteredList'
List allList = new ArrayList();
for (Iterator it=sysList.iterator(); it.hasNext();)
allList.add(it.next());
for (Iterator it=userList.iterator(); it.hasNext();
allList.add(it.next());
addWorksheetFor(wb, sysList); //add the list to an excel workbook
}
然後,它的工作原理。在這種情況下,會話變量不會被修改。 任何想法?
這是Java,對不對? – Gabe 2010-11-16 12:57:29
你對你的一些問題有很多答案。你確定沒有人能夠被接受爲正確答案嗎? – willcodejavaforfood 2010-11-16 13:03:34