zoukankan      html  css  js  c++  java
  • 3、反射-Field

    类的属性

    1、获取字段

      获取全部字段:getDeclaredField()

      获取某一个字段:getDeclaredField(String name)

    2、获取指定对象指定的字段的值

      get(Object obj):私有的需要调用:setAccessible(true)

    3、设定指定对象指定的值

      set(Object obj,Object value)

    public class Person {
        String name;
        private int age;
    
    
        public Person() {
        }
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
          Class clazz = Class.forName("cn.com.mrchengs.field.Person");
    
            //1、获取所有字段
            //共有的私有的均能获取
            Field[] fields = clazz.getDeclaredFields();
            for (Field field : fields){
                System.out.println(field.getName());
            }

            //2、获取指定名字的Field
            //共有的私有的都能获取得到
            Field field = clazz.getDeclaredField("age");
            System.out.println(field.getName());
            Field field1 = clazz.getDeclaredField("name");
            System.out.println(field1.getName());

     

           //3、获取指定对象的Field的值
            Person person = new Person("MrChengs",22);
            Field field = clazz.getDeclaredField("age");
         //对于私有的属性需要设置 field.setAccessible(
    true); Field field1 = clazz.getDeclaredField("name"); Object age = field.get(person); Object name = field1.get(person); System.out.println(age); System.out.println(name);

            //4、设置值
            Person person = new Person("MrChengs",22);
            Field field = clazz.getDeclaredField("age");
            field.setAccessible(true);
            field.set(person,33);
            System.out.println(field.get(person));

     对于工具方法同时可以参考Method的使用以及相关父类中的方法

     

  • 相关阅读:
    Qt开发陷阱一QSTACKWIDGET
    【解决】安装compass失败(gem install compass)
    Qt使用MySQL笔记一
    win7双系统安装openSUSE13.2解决【引导加载器安装期间出错】问题
    【转载】Sublime Text 3065 Keygen and Patcher
    HTML4,HTML5,XHTML 之间有什么区别?
    【转】实例解说双缓冲
    【MFC】利用双缓冲和随机函数rand()实现蒲公英飞舞
    基本sql语句--入门语句
    Linux使用jstat命令查看jvm的GC情况
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10933620.html
Copyright © 2011-2022 走看看