zoukankan      html  css  js  c++  java
  • 【java】之Method和Field反射获取和设置属性值

    package com.javaluna.reflect;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    import org.junit.Test;
    
    public class ReflectDemo01{
        
        @Test
        public void test0() throws Exception{
            Person person=new Person();
            person.setId(1);
            person.setName("张三");
            person.setAddress("上海");
            Class<? extends Person> c = person.getClass();
            Field[] fields = c.getDeclaredFields();//获取所有属性字段 private public,但是不包含父类
            for(Field f:fields){
                f.setAccessible(true);
                String fieldName=f.getName();
                if(fieldName.equals("address")){
                    f.set(person, "北京");//设置属性值
                }
                Object fieldVal=f.get(person);//获取属性值
                System.out.println("fieldName = "+fieldName+" fieldVal = "+fieldVal);
            
            }
            //直接获取某个字段值
            Method m=c.getDeclaredMethod("getId");
            System.out.println(m.invoke(person));//获取属性值
            Method m1=c.getDeclaredMethod("setName",String.class);
            m1.invoke(person, "李四");//设置属性值
            System.out.println(person.getName());
        }
    }
    
    class Person{
        
        private Integer id;
        private String name;
        private String address;
        
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        
    }

    关于反射详解:http://www.cnblogs.com/onlywujun/p/3519037.html

  • 相关阅读:
    Linux中more命令的实现
    hdu1392 Surround the Trees 凸包
    陈耀烨必将开启属于自己的围棋时代
    此文胜过听三年的培训课
    [置顶] 【持续更新中】推荐工具包
    【读书笔记】《未来闪影》罗伯特·J·索耶
    Redis util
    591
    多线程
    [Usaco2008 Feb]Meteor Shower流星雨
  • 原文地址:https://www.cnblogs.com/gyjx2016/p/7273592.html
Copyright © 2011-2022 走看看