java反射二
使用反射实现统一修改属性中类型为String的值
import java.lang.reflect.Field;
//根据反射,实现属性值的更改
public class Demo2 {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
Student stu = new Student(); //创建对象
changeTest(stu);//将对象传入方法
stu.toString(); //打印该对象的内容
}
/**
* 该方法将传入的对象中的为String类型的属性值将字符J改为字符T
* @param obj //传入的对象
*/
public static void changeTest(Object obj) throws IllegalArgumentException, IllegalAccessException{
//获取该类的所有属性对象
Field[] fields = obj.getClass().getFields();
for(Field para : fields) { //遍历每一个属性
if(para.getType() == String.class){//判断该属性对象是否为String类型
String value = (String)para.get(obj); //获取属性中的值
String newValue = value.replace('J', 'T'); //修改属性中的值
para.set(obj, newValue); //将修改后的值重新设置到对象中
}
}
}
}
下面是Student 类
package test1;
public class Student {
public String name = "Jack";
public String address = "Japanese";
public String email = "Jack@163.com";
@Override
public String toString(){
System.out.println(this.name + "_" + this.address + "_" + this.email);
return "";
}
}
最终打印的结果是:
Tack_Tapanese_Tack@163.com