zoukankan      html  css  js  c++  java
  • 反射获取成员变量

    Field

    Class.getField(String)方法可以获取类中的指定字段(可见的), 如果是私有的可以用getDeclaedField("name")方法获取,通过set(obj, "李四")方法可以设置指定对象上该字段的值, 如果是私有的需要先调用setAccessible(true)设置访问权限,用获取的指定的字段调用get(obj)可以获取指定对象中该字段的值

    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import com.loaderman.bean.Person;
    
    public class Demo_Field {
    
     /**
     Class.getField(String)方法可以获取类中的指定字段(可见的),如果是私有的可以用
     getDeclaedField("name")方法获取,通过set(obj, "李四")方法可以设置指定对象上该字段的值,
     如果是私有的需要先调用setAccessible(true)设置访问权限,用获取的指定的字段
     调用get(obj)可以获取指定对象中该字段的值@throws Exception
     */
        public static void main(String[] args) throws Exception {
            Class clazz = Class.forName("com.loaderman.bean.Person");
            Constructor c = clazz.getConstructor(String.class,int.class);//获取有参构造
            Person p = (Person) c.newInstance("张三",23);    //通过有参构造创建对象
    
            //Field f = clazz.getField("name");                         //获取姓名字段
            //f.set(p, "李四");                                   //修改姓名的值
            Field f = clazz.getDeclaredField("name");                 //暴力反射获取字段
            f.setAccessible(true);                               //去除私有权限
            f.set(p, "李四");
    
            System.out.println(p);
        }
    
    }
    
    package com.loaderman.bean;
    
    public class Person {
        private String name;
        private int age;
        public Person() {
            super();
    
        }
        public Person(String name, int age) {
            super();
            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;
        }
     }
    
  • 相关阅读:
    jquery中子元素和后代元素的区别
    MVC4 创建控制器时,无法检索元数据
    ref和out的用法说明举例(转)
    DataView的ToTable方法,类似数据库Distinct。
    oracle 19C 静默安装(单机版)
    Supervisord进程管家
    zabbix v3.0安装部署【转】
    Linux下Hadoop2.7.3集群环境的搭建
    Redis集群搭建与简单使用【转】
    redis+keepalived实现高可用
  • 原文地址:https://www.cnblogs.com/loaderman/p/6411274.html
Copyright © 2011-2022 走看看