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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘家斌 中级黑马   /  2014-10-12 09:58  /  822 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      
  1. /*
  2. 获取一个类中的所有字符串变量,并将字符串变量中的字母a全换成字母b
  3. */
  4. import java.lang.reflect.*;
  5. class ReflectText1
  6. {
  7.         public static void main(String[] args) throws Exception
  8.         {
  9.                 Person p=new Person();
  10.                 //获取对象集合
  11.                 Field[] fields=Person.class.getDeclaredFields();
  12.                 //高级for取出集合中的所有对象
  13.                 for(Field field:fields)
  14.                 {
  15.                         if(field.getType()==String.class)
  16.                         {
  17.                                 field.setAccessible(true);//加true设置可见
  18.                                 String s=(String)field.get(p);//返回值类型为object,要强转
  19.                                 String m=s.replace("a","b");//字符串方法替换
  20.                                 field.set(p,m);//将新值赋给p对象的对应变量
  21.                         }
  22.                         System.out.println(field.get(p));
  23.                 }
  24.         }
  25. }
  26. class Person
  27. {
  28.         private String s1="abc";
  29.         private String s2="aasdbc";
  30.         private String s3="fgdfgqac";
  31.                         String s4="dfsac";
  32.                         String s5="fdf3abc";
  33.         private String s6="aba";

  34. }
复制代码

张老师讲解的一个实例:取出类中所有的String类型的变量,并对字符串做更改的时,因为张老师定义的没有私有变量,但在实际中类中的变量大部分都是私有的,所以严格上讲我感觉应该这样写更合适一些

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马