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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.csdn.day1;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
public class ReflectTest {
/**
  * @param args
  */
public static void main(String[] args) throws Exception{
  
  ReflectPrint rp=new ReflectPrint(3,6);//这个类见下面
  Field fx=rp.getClass().getDeclaredField("x");
  fx.setAccessible(true);//设置强制使用这个反射,因为这是私有的
  Field fy=rp.getClass().getField("y");
//  System.out.println(fx.get(rp));
//  System.out.println(fy.get(rp));
//  
  
  changeStringValues(rp);//创建一个方法,通过反射改变rp中的值
  System.out.println(rp);
  
}
private static void changeStringValues(Object obj) throws Exception {
  Field[] fields=obj.getClass().getFields();//通过obj对象的字节码,获取所有的字段
  for (Field fiel : fields) {
   //这就最好用==因为这两个对象都是字符串,可以比较
   if(fiel.getType()==String.class)//判断获取的String.class类型是否相等//String.class这是表示只获取string对象的字节码
   {
   String str=(String) fiel.get(obj);//将或取得对象转换成string类型  
       str=str.replace('b', '8');
       fiel.set(obj,str);
   }
   
  }
  
   
  
  
}
}


===========================================
package com.csdn.day1;
public class ReflectPrint {
private int x;
public int y;
public String str1="ball";
public String str2="basketball";
public String str3="heima";
public ReflectPrint(int x, int y) {
  super();
  this.x = x;
  this.y = y;
}
@Override
public String toString()
{  
  return str1+"---"+str2+"----"+str3;
  
}
}

0 个回复

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