package reflect;
import java.lang.reflect.Field;
public class ReflectionTest {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception {
Point point = new Point("AAA", "BBB");
//Field field = cls.getDeclaredField("x"); //仅限类或借口制定的公共属性
Field fieldx = point.getClass().getDeclaredField("x"); //已声明字段
fieldx.setAccessible(true); //取消java访问检查
System.out.println(fieldx.get(point)); //在某个对象上获取x属性的值
modifyString(point);
System.out.println(fieldx.get(point));
}
public static void modifyString(Object obj) throws Exception {
Field[] fields = obj.getClass().getDeclaredFields();//类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
if(fields != null && fields.length>0) {
for(Field field : fields) {
if(field.getType() == String.class) { //比较是否为同一份字节码
field.setAccessible(true);
String oldStr = (String)field.get(obj);
String newStr = oldStr.replace('A', 'B');
field.set(obj, newStr);
}
}
}
}
}