package reflect;
import java.lang.reflect.Field;
/**
* @ClassName: TestReflect
* @Description:
* @Author: xuezhouyi
* @Version: V1.0
**/
public class TestReflect {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
/* 创建一个对象 */
Student student = new Student();
System.out.println("第一次:"+student.name);
/* 反射Student类 + name属性 */
Class<? extends Student> studentClass = student.getClass();
Field fName = studentClass.getDeclaredField("name");
String rflName = (String)fName.get(student);
/* 反射String类 + 字符数组 */
Class<String> stringClass = String.class;
Field fValue = stringClass.getDeclaredField("value");
fValue.setAccessible(true);
char[] rflValues = (char[])fValue.get(rflName);
/* 修改一个元素 */
rflValues[1] = 'X';
System.out.println("第二次:"+student.name);
}
}
class Student{
public final String name = "abc";
}