ReflecClassPoint01.java
package com.sg.reflex;
public class ReflecClassPoint01 {
private int x;
public int y ;
public String str1 = "ball";
public String str2 = "basketball";
public String str3 = "itcast";
public ReflecClassPoint01() {
super();
}
public ReflecClassPoint01(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return str1 + ":" + str2 + ":" + str3 ;
}
}
测试ReflecClassPointTest.java
package com.sg.reflex.test;
import java.lang.reflect.Field;
import com.sg.reflex.ReflecClassPoint01;
public class ReflecClassPointTest {
public static void main(String[] args) throws Exception{
ReflecClassPoint01 p = new ReflecClassPoint01(3, 5);
Field fieldY = p.getClass().getField("y");
//fieldY 的值是?
System.out.println(fieldY.get(p));
Field fieldX = p.getClass().getDeclaredField("x");
//将此对象的 accessible 标志设置为指示的布尔值
fieldX.setAccessible(true);
System.out.println(fieldX.get(p));
chageStringValue(p);
System.out.println(p);
}
private static void chageStringValue(Object obj) throws Exception{
Field[] fields = obj.getClass().getFields();
for (Field field : fields) {
//field.getType();
//与字节码作比较用== 假如是String的字节码
if (field.getType() == String.class) {
String oldValue = (String) field.get(obj);
//把小写的b换成大写B
String newValue = oldValue.replace("b","B");
field.set(obj, newValue);
}
}
}
}