• 通过Field (反射)给私有字段赋值


    public class Person {
        public String name;
        public char sex;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public char getSex() {
            return sex;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setSex(char sex) {
            this.sex = sex;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }

    进行赋值:

     public static void main(String[]args) throws NoSuchFieldException, SecurityException
        {
            Person person =new Person();
    
            //通过Class.getDeclaredField(String name)获取类或接口的指定已声明字段。
            Field f1=person.getClass().getDeclaredField("name");//指定获取name变量
            System.out.println("f1:"+f1);
    
    
            //通过Class.getDeclaredFields()获取类或接口的指定已声明字段。  ->得到的是一个Field类型的数组
            Field []f2=person.getClass().getDeclaredFields();
            System.out.println("
    f2:");
            for(Field field:f2)//遍历循环输出
            {
                System.out.println(field);
            }
    
    
            //通过Class.getField(String name)返回一个类或接口的指定公共成员字段,私有成员报错。
            Field f3=person.getClass().getField("name");
            System.out.println("
    "+f3);
    
    
            //通过Class.getFields(),返回 Class 对象所表示的类或接口的所有可访问公共字段。
            Field []f4=person.getClass().getFields();
            System.out.println("
    f4:");
            for(Field fields:f4)
            {
                //因为只有name属性为共有,因此只能遍历出name属性
                System.out.println(fields);
            }
        }
  • 相关阅读:
    ListCtrl中垂直滚动条自动滚动
    auth组件
    母版的继承
    mysql数据备份和恢复
    部署MHA
    安装mysql
    yum源优化
    存储过程
    redis哨兵、集群
    redis主从同步
  • 原文地址:https://www.cnblogs.com/weibanggang/p/10118585.html
Copyright © 2020-2023  润新知