public void setTbEmailPop3Smtp(Integer Id ,int user) { List<TbEmailPop3Smtp> listfind = daos.getDbFindDAO().findbytbemailpop3smtp( "from TbEmailPop3Smtp a where a.tbUser="+user); int i,j=listfind.size(); for(i=0;i<j;i++) {TbEmailPop3Smtp invent = (TbEmailPop3Smtp) listfind.get(i); if(invent.getPkid()==Id) { invent.setIsuse(1); }else invent.setIsuse(0); daos.getDbEditDAO().edit(invent); System.out.print("shit"); }我这段代码的意思大概是这样的,用一个for循环把List<TbEmailPop3Smtp>中的数据和id比较,然后相等的吧其中一个属性Isuse设为1,其他的设为0但是运行了结果好像不能改变,是不是get(i)不能这么用?其他的地方我确定没错……是把pikid和id相等的object的一个属性isuse设为1 我吧System.out.print("shit");放在invent.setIsuse(1);上面可以读到 呵呵,忘了告诉大家乐,这个代码没错,是软件运行模式错了,重登就可以了
get(index)就是获取到List对象中下标为“index”的值。解释:List对象通过泛型的形式先定义一个对象类型,之后只需要通过add方法增加对象,之后通过get方法获取到对象的值的形式来灵活的实现参数传递。举例:List<E> list = new ArrayList<E>();//定义一个list的泛型list.add((E)"StringBatch");//给list增加字符串对象,实际上已经强制转换为“E”类型list.get(0);//获取到对象的第一个存储值。备注:如果获取的”index“值不存在,就会报错数组越界,所以开发过程中一定多加注意。
TbEmailPop3Smtp invent = (TbEmailPop3Smtp) listfind.get(i);在这个地方的后面加上System.out.println(invent.getPkid());作跟踪调查,看看输出什么,就知道get(i)有没有用了。daos.getDbEditDAO().edit(invent);还有这里是把更改的数据存起来吗?如果不是,那你需要加一个存到数据库里面的步骤。因为你变的list的值,是放在内存里面的,想查还是查不到的。如果是将list存起来,那就多作跟踪语句,就可以判断。我遇到问题经常这样处理的哈。祝你调试程序成功。由于代码不详细,只能说到这里。因为我看这段代码也没问题。get(i)就是你写的那样的用法 楼上的,你搞错了吧? list能操作对象的属性?LZ有问题的话,百度继续M我
List<E>的get(index)拿出来的是List里面元素的reference,这点你用的没有错,调用这个reference的方法将直接作用到List里面的元素(实例)上去。建议你step in调试这个方法,看看invent.setIsuse(1);有没有得到执行。
用JDK1.5以后的那个for循环来搞不就行了,不用用到get方法for(TbEmailPop3Smtp invent:listFind){if(invent.getPkid()==Id) { invent.setIsuse(1); }else invent.setIsuse(0); daos.getDbEditDAO().edit(invent); System.out.print("shit");}试一下这段看看