【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

 

转载于:https://www.cnblogs.com/gyjx2016/p/7273592.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值