反射_3.深入理解Field类

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();
        }
    }

 

  

posted @ 2018-01-19 17:31  Dylan丶Djm  阅读(370)  评论(0编辑  收藏  举报