- /*
- 获取一个类中的所有字符串变量,并将字符串变量中的字母a全换成字母b
- */
- import java.lang.reflect.*;
- class ReflectText1
- {
- public static void main(String[] args) throws Exception
- {
- Person p=new Person();
- //获取对象集合
- Field[] fields=Person.class.getDeclaredFields();
- //高级for取出集合中的所有对象
- for(Field field:fields)
- {
- if(field.getType()==String.class)
- {
- field.setAccessible(true);//加true设置可见
- String s=(String)field.get(p);//返回值类型为object,要强转
- String m=s.replace("a","b");//字符串方法替换
- field.set(p,m);//将新值赋给p对象的对应变量
- }
- System.out.println(field.get(p));
- }
- }
- }
- class Person
- {
- private String s1="abc";
- private String s2="aasdbc";
- private String s3="fgdfgqac";
- String s4="dfsac";
- String s5="fdf3abc";
- private String s6="aba";
- }
复制代码
张老师讲解的一个实例:取出类中所有的String类型的变量,并对字符串做更改的时,因为张老师定义的没有私有变量,但在实际中类中的变量大部分都是私有的,所以严格上讲我感觉应该这样写更合适一些 |
|