package com.heima.day1;
import java.lang.reflect.Field;
public class ReflectTextTwo {
private int x;
public int y;
public ReflectTextTwo(int x, int y) {
super();
this.x = x;
this.y = y;
}
public static void main(String[] args) throws Exception {
ReflectTextTwo rt1 = new ReflectTextTwo(3, 5);
Field fdy = rt1.getClass().getField("y");
// fdY的值是5么? 不是,因为 获取的是字节码而不是对象上的变量 是类上的
// 要用他去取对应对象的值
System.out.println(fdy.get(rt1));
/* Field fdx = rt1.getClass().getField("x");
// ava.lang.NoSuchFieldException: x 因为x是私有的所以不可以直接的获得
// 该如何解决那。。。?
*/
Field fdx = rt1.getClass().getDeclaredField("x");
// fdx.setAccessible(true); //设置可以被获取
System.out.println(fdx.get(rt1));
}
fdx.setAccessible(true); 这个代码我注释了 依然可以获取到私有变量的值。。和视频里的那个异常并没有出现,求解释 |