新手学习中。
public class TESTACTION implements Action{
private ArrayList privileges;
private User user;
private User user2;
public ArrayList getPrivileges() {
return privileges;
} /**
* @see com.opensymphony.xwork.Action#execute()
*/
public String execute() throws Exception
{
privileges = new ArrayList();
for(int i=0;i<=1;i++){
user = new User();
user.setId("id"+i);
user.setName("nhk"+i);
System.out.println("vECTROs set name " + user.getName());
System.out.println(privileges.add(user));
}
for(int i=0;i<privileges.size();i ++){
user2 = new User();
user2 = (User)privileges.get(i);
System.out.println("vECTROs get name = " + user.getName());
}
return Action.SUCCESS;
}
}
为什么在第一个循环中每次向ArrayList中添加一个USER对象(只具备name与id属性),添加完毕后从ArraryList中取时 得到的USER对象都是一样的 ?后台打印出来的信息如下:
vECTROs set name nhk0
true
vECTROs set name nhk1
true
vECTROs get name = nhk1
vECTROs get name = nhk1
很是郁闷,谢谢大家
public class TESTACTION implements Action{
private ArrayList privileges;
private User user;
private User user2;
public ArrayList getPrivileges() {
return privileges;
} /**
* @see com.opensymphony.xwork.Action#execute()
*/
public String execute() throws Exception
{
privileges = new ArrayList();
for(int i=0;i<=1;i++){
user = new User();
user.setId("id"+i);
user.setName("nhk"+i);
System.out.println("vECTROs set name " + user.getName());
System.out.println(privileges.add(user));
}
for(int i=0;i<privileges.size();i ++){
user2 = new User();
user2 = (User)privileges.get(i);
System.out.println("vECTROs get name = " + user.getName());
}
return Action.SUCCESS;
}
}
为什么在第一个循环中每次向ArrayList中添加一个USER对象(只具备name与id属性),添加完毕后从ArraryList中取时 得到的USER对象都是一样的 ?后台打印出来的信息如下:
vECTROs set name nhk0
true
vECTROs set name nhk1
true
vECTROs get name = nhk1
vECTROs get name = nhk1
很是郁闷,谢谢大家
解决方案 »
- resin 3.1 一个奇怪的页面报 com.caucho.java.JavaCompileException: D? 和 java.lang.OutOfMemoryError: Java heap
- strust1.X页面显示的问题(在线=)
- jsp显示空白,试过把java代码注释没问题,但写个类运行也没问题!
- java控件
- 简单的一个数据链接BEAM,不知道那里错了。
- select语句请教
- 热爱JSP的朋友留个联系方式阿
- JAVA高手来帮菜鸟一个忙
- 大家用jsp做的项目标签库用的多吗?为什么网上关于taglib和tld文件的资料那么少
- Websphere Application Server中JSP的配置问题!!
- 请问一下怎样才算是掌握了JSP
- 乱码问题求助
for(int i=0;i<=1;i++){
privileges = new ArrayList();
user = new User();
user.setId("id"+i);
user.setName("nhk"+i);
System.out.println("vECTROs set name " + user.getName());
System.out
for(int i=0;i<=1;i++){
List privileges = new ArrayList();//改成这样
user = new User();
user.setId("id"+i);
user.setName("nhk"+i);
System.out.println("vECTROs set name " + user.getName());
System.out.println(privileges.add(user));
}
//改成这样--楼主对对象句柄还搞不很清楚上面的写快了,不好意思
for(int i=0;i<=1;i++){ User user = new User();//改成这样
user.setId("id"+i);
user.setName("nhk"+i);
System.out.println("vECTROs set name " + user.getName());
System.out.println(privileges.add(user));
}
user2 = new User();
user2 = (User)privileges.get(i);
System.out.println("vECTROs get name = " + user.getName()+":"+user);
}
对不起刚才看快了。因上楼主粗心user2 = new User();而后面是user.getName()
不知道究竟是改 “List privileges = new ArrayList();//改成这样” 还是 “User user = new User();//改成这样” ,
如果把“List privileges = new ArrayList();//改成这样”加在循环里时,那么每次都是NEW了一个ArrayList 对象,那么它的SIZE永远只能为1;
如果“User user = new User();“如
ArrayList privilege = new ArrayList();
for(int i=0;i<=1;i++){
User user = new User();
user.setId("id"+i);
user.setName("nhk"+i);
System.out.println(i + "^^^^^^^^^" + user.getName());
privilege.add(user);
}
System.out.println("privilege.size---" + privilege.size());
for(int i=0;i<privilege.size();i ++){
User user2 = new User();
user2 = (User)privilege.get(i);
System.out.println(i+"---------" + user2.getName());
}打印效果 0^^^^^^^^^nhk0
1^^^^^^^^^nhk1
privilege.size---2
0---------nhk1
1---------nhk1
你自己在机器上测试通过?
楼主粗心了,应该是user2.getName()