我在我的动作类下面的代码: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