java反射设置属性值和赋值,简单实用

package com.shentb.hmb.utils;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ReflexUtils {

    /**
     * 反射根据属性名获取属性值
     *
     * @param fieldName  属性名
     * @param object 实体类对象
     * @return
     */
    public static Object getFieldValueByFieldName(String fieldName, Object object) {
        try {
            Field field = object.getClass().getDeclaredField(fieldName);
            //设置对象的访问权限,保证对private的属性的访问
            field.setAccessible(true);
            return  field.get(object);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 通过反射设置属性的值
     * @param fieldName  属性名
     * @param fieldValue  属性值
     * @param object  实体类对象
     * @param parameterTypes  设置属性值的类型
     * @throws
     */
    public static void setFieldValueByFieldName(String fieldName,Object fieldValue,Object object,Class<?>... parameterTypes) {
        try {
            Field[] fields = object.getClass().getDeclaredFields();
            for(int i=0;i<fields.length;i++){
                Field field = fields[i];
                //字段名称
                String name = field.getName();
                if(name.equals(fieldName)){
                    field.setAccessible(true);
                    //field.set(object,fieldValue) 可代替下面的拼接set方法;
                    //将属性的首字符大写,方便构造get,set方法
                    String methname = name.substring(0,1).toUpperCase()+name.substring(1);
                    Method m = object.getClass().getMethod("set" + methname,parameterTypes);
                    m.invoke(object,fieldValue);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值