加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

利用java反射机制从不同泛型的list中取出对象,并对其进行赋值

(2012-07-31 16:36:04)
标签:

java

反射

杂谈

分类: JAVA

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class testList{

 public static void main(String[] args) {
  user us = new user(1,"xg","111");
  user1 us1 = new user1(2,"dx","111");
  List list = new ArrayList();
  list.add(us);
  list.add(us1);
  try {
   System.out.println("修改之前:");
   deal(list);
   System.out.println("修改之后:");
   System.out.println(us.getPassWord());
   System.out.println(us1.getPassWord());
  } catch (SecurityException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (NoSuchFieldException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 public static void deal(List list) throws SecurityException, NoSuchFieldException
 {
  for (int i = 0; i < list.size(); i++) {
   //获取对象中名为"passWord"元素
   Field fields = list.get(i).getClass().getDeclaredField("passWord");
   try {
    if (!fields.isAccessible())//判断该对象是否可以访问
    {
     fields.setAccessible(true);//设置为可访问
    }
    System.out.println(fields.get(list.get(i)));//获取list中所有字段名为“passWord”的值
    fields.set(list.get(i), "222");//将list中所有字段名为“passWord”的值设置为“222"
   } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有