A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孟伟娟 中级黑马   /  2012-12-3 16:08  /  943 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

把指定类中的String字段值中的“b”改成“#”
  1. import java.lang.reflect.Field;

  2. public class ReflectTest1 {
  3.     public static void main(String[] args) throws Exception{
  4.          //获取class对象
  5.        Class cls = new ReflectPoint().getClass();

  6.       //获取字段,得到的是所有公有和父类中的方法(这个例子中没有继承,所以只有本类的公有方法)
  7.       Field[] field = cls.getFields();
  8.      Object obj = cls.newInstance();

  9.      for(int i=0;i<field.length;i++){

  10.         //判断是不是String类型,是,就把值中的“b”改成"#"
  11.         if(field[i].getType() == String.class){
  12.               //打印原先的值
  13.              System.out.println("旧值为:" + field[i].getName() + ": " + field[i].get(obj) );
  14.             //更改值
  15.             String oldValue =(String)(field[i].get(obj));
  16.             String newValue = oldValue.replace('b', '#');
  17.             field[i].set(obj, newValue);
  18.             //打印改过之后的值
  19.            System.out.println("新值为:" + field[i].getName() + ": " + field[i].get(obj) );
  20.       }
  21.   }

  22. }

  23. }
复制代码
打印结果为:
旧值为:str1: abc
新值为:str1: a#c
旧值为:str2: febbbcc,woheboleb
新值为:str2: fe###cc,wohe#ole#
旧值为:str3: bbbb
新值为:str3: ####

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马