我有2个会话范围的bean
1)sessionholder1 2)sessionholder2
两个会话持有者都有对象UserVO
class SessionHolder1{
private UserVO user = new UserVO();
}
class SessionHolder2{
private UserVO user = new UserVO();
}
现在,如果我在sesionholder1中更改userVO的某个变量,它也会在sessionholder2中更改。这种行为正常还是由于设计不良?
除了使用clone()之外,还有其他解决方法吗?请帮忙。 提前谢谢。
答案 0 :(得分:2)
如果您在两者中存储相同的UserVO对象,那么当然在一个中更改某个字段将更改另一个中的字段。如果需要两个不同的对象,则创建两个不同的对象。如果一个是另一个的副本,最好的方法是使用复制构造函数:
/**
* Constructs a copy of the given userVO
*/
public UserVO(UserVO userVO) {
...
}