精华内容
下载资源
问答
  • C#利用反射获取对象属性值
    2021-09-02 17:44:30
     public string GetPropertyValue<T>(T model, string fieldName)
        {
            Type type = typeof(T);//或者 Type type = model.GetType();
    
            PropertyInfo property = type.GetProperty(fieldName);
    
            if (property == null) return string.Empty;
    
            object fieldValue = property.GetValue(model, null);
    
            if (fieldValue == null) return string.Empty;
    
            return fieldValue.ToString();
        }
    
        public T SetPropertyValue<T>(T model, string fieldName, object fieldValue)
        {
    
            model.GetType().GetProperty(fieldName).SetValue(model, fieldValue);
            Type type = typeof(T);//或者 Type type = model.GetType();
    
            PropertyInfo property = type.GetProperty(fieldName);
    
            if (property == null) return string.Empty;
    
            object fieldValue = property.SetValue(model, fieldValue);
    
            if (fieldValue == null) return string.Empty;
    
            return fieldValue.ToString();
        }
    

    更多相关内容
  • 主要介绍了java基于反射得到对象属性值的方法,结合实例形式分析了java基于反射获取对象属性值的相关实现方法与操作技巧,需要的朋友可以参考下
  • MenuPermissionVO menuPermission = new MenuPermissionVO(); Field[] declaredFields = menuPermission.getClass().getDeclaredFields(); for (Field field : declaredFields) { ... // 获取属性的类型 ...
    
    
            MenuPermissionVO menuPermission = new MenuPermissionVO();
            Field[] declaredFields = menuPermission.getClass().getDeclaredFields();
            for (Field field : declaredFields) {
                field.setAccessible(true);
                // 获取属性的类型
                String genericType = field.getGenericType().toString();
                //如果类型是string
                if (genericType.equals("class java.lang.String")) {
                    //获取属性值
                    System.out.println("属性值= " + field.get(menuPermission));
                    //重新赋值
                    field.set(menuPermission, (field.get(menuPermission)+ "赋值");
                }
            }
    
    
    展开全文
  • 主要介绍了Java 用反射设置对象属性值实例详解的相关资料,需要的朋友可以参考下
  • /** * 属性对象值反射获取工具类 * @author 周围 * @date 2016-8-14 */ public class ParamsReflect { public static final String FILE_FIELD = "nameB,"; /** * 获取当前对象对应字段的属性...

    近段时间在做web项目,前端使用的是jQuery EasyUI。

    为方便需要,准备做一个前端通用的Datagird导出Excel功能,博主也考虑过思路和最终功能,1、前端选中行导出;2、当前页导出;3、当前过滤条件导出。

    想偷懒在网上找找已有的代码改改,发现大部分只能满足个别需求,使用JS导出只能满足前端,使用代码才能实现3功能。

    。。。。。。

    好了,说了一堆废话,回归正题,本文是在做通用自定义字段导出时所需要,根据属性名去查找对象和子对象,找到对应属性值,抓取回来放到Excel中。

    直接上代码,已经封装好,直接调用即可:import java.lang.reflect.Field;

    /**

    * 属性(对象)值反射获取工具类

    * @author 周围

    * @date 2016-8-14

    */

    public class ParamsReflect {

    public static final String FILE_FIELD = "nameB,";

    /**

    * 获取当前对象对应字段的属性(对象)

    * 声明,需要注意在NoSuchFieldException异常捕捉中捕获自己需要的属性字段进行拦截,告诉当查询这些属性名的时候,指定是查找的哪些对象,如果不告诉它,它是不知道的

    * @param obj当前对象

    * @param field需要获取的属性名,可以是当前对象中的属性名, 也可以是当前对象中的对象的属性名

    * @returnObject  当前对象指定属性值

    */

    public static Object getFieldValue(Object obj, String field) {

    Class> claz = obj.getClass();

    Field f = null;

    Object fieldValue = null;

    try {

    f = claz.getDeclaredField(field);

    f.setAccessible(true);

    fieldValue = f.get(obj);

    } catch (SecurityException e) {

    e.printStackTrace();

    } catch (NoSuchFieldException e) {

    //此处异常捕获为:找不到属性名异常。

    //注意在此处我们要手工去帮它找到field应该对象到哪个对象里的值,因为我们不知道它们之间的关系,所以需要手工指定关系,找哪个对象去关联

    if(FILE_FIELD.indexOf(field) != -1) fieldValue = getCustomChildObj(obj, claz, B.class, field);

    else fieldValue = null;

    } catch (IllegalArgumentException e) {

    e.printStackTrace();

    } catch (IllegalAccessException e) {

    e.printStackTrace();

    }

    return fieldValue;

    }

    /**

    * 获取自定义子属性对象,传入指定对象名,在当前对象中找到子对象,再通过field找到子属性

    * @param obj父对象名称

    * @param claz父对象class反射

    * @param customClass自定义判断的子对象类型

    * @param field属性名

    * @return Object

    */

    public static Object getCustomChildObj(Object obj, Class> claz, Class> customClass, String field) {

    Field[] fs = claz.getDeclaredFields();

    Field f = null;

    for (int i = 0; i 

    f = fs[i];

    if(f.getType().equals(customClass)) {

    return getChildObjectParam(obj, f, field);

    //return claz.getDeclaredField(f.getName());

    }

    }

    return null;

    }

    /**

    * 通过找到的子对象,获取到当前的属性,传入所需的属性名,得到属性值

    * @param o父对象

    * @param f父对象下的子对象的Field对象

    * @param field所需要获取的属性名

    * @returnObject

    */

    public static Object getChildObjectParam(Object o, Field f, String field)  {

    f.setAccessible(true);

    Object obj = null;

    Class> childClass = null;

    Field childF = null;

    Object fieldValue = null;

    try {

    obj = f.get(o);

    childClass = obj.getClass();

    childF = childClass.getDeclaredField(field);

    childF.setAccessible(true);

    fieldValue = childF.get(obj);

    } catch (IllegalArgumentException e) {

    e.printStackTrace();

    } catch (SecurityException e) {

    e.printStackTrace();

    } catch (IllegalAccessException e) {

    e.printStackTrace();

    } catch (NoSuchFieldException e) {

    e.printStackTrace();

    }

    return fieldValue;

    }

    }

    模拟测试:

    对象A中有属性name,子对象B,对象B中有属性id,nameB。

    B b = new B();

    b.setId("b");

    b.setNameB("b-name");

    A a = new A();

    a.setName("a-name");

    a.setB(b);

    Object value1 = ParamsReflect.getFieldValue(a, "name"); //获取a中的属性

    Object value2 = ParamsReflect.getFieldValue(a, "nameB"); //获取b中的属性

    功能比较简单,并不灵活,为应付功能,先做了一个这样的版本,以后继续完善,也留几个问题。

    1、目前的版本只控制到了需要自己传入对应的子对象.class,博主还未想到怎么样设定自动匹配对应的属性值。(也想过直接对该对象和里面的所有子对象进行扫描,拿需要获取值得字段进去得,但是发现一个问题,不同对象中的属性,可能存在属性名相同,所以扫描无法控制唯一性)

    2、以上版本是用于EasyUI中的Datagrid,该控件中的field属性无法命名为"b.nameB",不能直接用子对象去获取子属性,博主也尝试改过EasyUI的JS源码,让其支持子对象.属性的方式,但又存在其他的问题不兼容这个方式,所以以这个方案实施,有大神有其他办法吗。

    3、最终版,作者是准备在空闲的时候完善升级它,不局限于Datagrid,所有都支持的导出Excel功能。这里准备做的是,先将对象传入后台,并进入数据库查询,将对应实体的表,字段名,字段类型全部获取到。之后处理成对应格式,是子对象的,用子对象属性名.子对象属性拼接好,返回前台,让用户选择需要导出的列,选择完毕后返回后台,拼接这些字段,生成SQL语句,传入后台自行查询,至于过滤那部分,应该是没办法抽取的,需要在各自的控制层处理一下。

    记录每一次的技术心得。

    展开全文
  • C# 反射获取对象属性值

    千次阅读 2018-04-17 15:08:01
    public class ForeachClass ... /// C#反射遍历对象属性 /// &lt;/summary&gt; /// &lt;typeparam name="T"&gt;对象类型&lt;/typeparam&gt; /// &lt;param n...
        public class ForeachClass
        {
            /// <summary>
            /// C#反射遍历对象属性
            /// </summary>
            /// <typeparam name="T">对象类型</typeparam>
            /// <param name="model">对象</param>
            public static void ForeachClassProperties<T>(T model)
            {
                Type t = model.GetType();
                PropertyInfo[] PropertyList = t.GetProperties();
                foreach (PropertyInfo item in PropertyList)
                {
                    string name = item.Name;
                    object value = item.GetValue(model, null);
                }
            }
        }
    展开全文
  • 下面小编就为大家带来一篇Java通过反射机制动态设置对象属性值的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • java通过反射获取对象的指定属性值(包括私有属性值和指定注解属性值
  • 通过反射获取对象属性值(动态获取) 上代码 public void getFieldsValue(Object obj){ Class<>> objClass = obj.getClass(); //获取对象的所有属性(包括私有属性) Field[] fields = objClass....
  • Java如何基于反射获取对象属性信息,属性,对象,四种,建立一个,创建一个Java如何基于反射获取对象属性信息易采站长站,站长之家为您整理了Java如何基于反射获取对象属性信息的相关内容。先建立一个类,有四种属性:...
  • 对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): 代码如下: Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了 foreach ...
  • * 获取属性类型(type),属性名(name),属性值(value)的map组成的list * */ private List getFiledsInfo(Object o){ Field[] fields=o.getClass().getDeclaredFields(); String[] fieldNames=new String[fields....
  • * java通过反射获取Java对象属性值 * @param obj 对象 * @param propertyName 字段 * @return java.lang.Object */ public static Object getPropertyValue(Object obj, String propertyName) { try { ...
  • 场景:java通过反射方式根据对象属性名称获取属性值1.实现方法public static Double getFieldValueByFieldName(String fieldName,Object object) {try {Field field = object.getClass().getDeclaredField(fieldName)...
  • 一、前言 ...现在在这里记录一下, 换了一个例子,获取Person对象的属性名和属性值。 二、代码 Person对象: public class Person { private String firstName; private String lastName; public Pers
  • 主要介绍了Java反射通过Getter方法获取对象VO的属性值过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 反射机制的用途非常多,比如获取方法,属性名和属性值等,甚至可以获取标签等标签属性。今天来比较几种获取实例化对象属性值方法
  • 主要介绍了C#通过属性名字符串获取、设置对象属性值操作,结合实例形式总结分析了C#通过反射获取对象属性值并设置属性值,获取对象的所有属性名称及类型等相关操作技巧,需要的朋友可以参考下
  • 反射以及反射获取对象属性注解

    千次阅读 2020-11-20 15:04:58
    能够获得任意一个类的全部信息,包含其属性和方法 能够任意访问一个对象属性和方法 反射能让你执行一些正常情况下无法实现的操作: 访问私有属性和私有方法 不通过new关键字,而通过类名来实例化对象 反射...
  • /** 获取对象属性和其对应的 * @throws Exception */ public static Map<String, Object> getFiledAndValue(Object object) throws Exception { String str = "Integer Long Short Byte Float Double ...
  • // 调用getId方法 Object entityId = ReflectUtil.invoke(entity, "getId");
  • 需要获取实体对象的属性及属性值作为key-value形式的NameValuePair参数,用于post请求的参数,为了避免一大段的get代码,考虑使用反射方式进行设置,示例代码如下: public class Person { private String name; ...
  • java反射修改对象属性值
  • 主要介绍了Java利用反射获取object的属性代码示例,具有一定借鉴价值,需要的朋友可以参考下。
  • /*****JSON格式orJXL格式*默认JSON*@paramorder*@throwsIllegalAccessException*@throwsIllegalArgumentException... // 得到此属性的 这里是通过设置的get方法进行取值还是直接可以访问一个private的对象属性? 展开
  • 之前一直不知道反射到底能用在哪里,直到我看到了公司OA的考勤表设计: DAY表示每个月的天数,后面的数字表示每月的几号,A表示上午,B表示下午。比如DAY01A用以表示当月1号的出勤情况。 所以,这个表用以记录考勤...
  • @Around("@annotation(requireArea)") public Object doAroundService(ProceedingJoinPoint joinPoint, RequireArea requireArea) throws Throwable { Class<?> aClass = joinPoint.getTarget().getClass()...
  • 反射获取类或对象属性

    千次阅读 2019-05-08 18:36:30
    最近在开发过程中,由于部分常量配置在接口而非枚举中,当我们需要通过属性名去获取具体接口中常量对应的... 大致思路:定义 ReflectObjectUtil 工具类,通过反射获取类或对象信息,并将对应信息组装,按照要求的格...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 153,987
精华内容 61,594
关键字:

反射获取对象属性值

友情链接: cor.zip