1.Field是什么?
答:Field是JDK一个类,位于java.lang.reflect包下。 他可以保存java类中的属性
在Java反射中 Field类描述的是类的属性信息。
2.如何得到Field类的对象
答:
String.class.getDeclaredField("属性名");//可以获取私有Field对象 String.class.getField("属性名");//不能获取私有Field对象
3.请用反射写出一个对象获取私有属性值的案例
public static void main(String[] args) { try { String str = new String("123"); // getDeclaredField可以获取私有属性 Field field = String.class.getDeclaredField("value"); // 设置该属性可以被访问(如果没有这步,你拿到了Field对象但是不能拿到值) field.setAccessible(true); // 将对象传入,这里很多人会有误区,为什么要传对象,不传对象不能拿到值吗? // 答:不传拿不到值,因为,Class对象是单例(属于类的),你不指定对象,则拿不到值 char[] chs = (char[]) field.get(str); System.out.println(Arrays.toString(chs)); } catch (Exception e) { e.printStackTrace(); } }