分享

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

 wwq图书世界 2019-10-26
  • 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();
  • }
  • }
  • }
    • 本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约