JAVA 通过类属性名称(String)操作属性值

根据属性名获取属性值

/** 
 * 根据属性名获取属性值 
 * */  
   private Object getFieldValueByName(String fieldName, Object o) {  
       try {    
           String firstLetter = fieldName.substring(0, 1).toUpperCase();    
           String getter = "get" + firstLetter + fieldName.substring(1);    
           Method method = o.getClass().getMethod(getter, new Class[] {});    
           Object value = method.invoke(o, new Object[] {});    
           return value;    
       } catch (Exception e) {    
           log.error(e.getMessage(),e);    
           return null;    
       }    
   }   
     

根据属性名设置属性值

    /**
     * 通过反射写一个类,类中有个方法。
     * 该方法可以设置某个类中的某个属性(构造方法,成员变量,成员方法)为特定的值
     * @param obj
     * @param fieldName
     * @param value
     */
    public static void setFieldValueByName(Object obj, String fieldName, Object value{
        try {
            // 获取obj类的字节文件对象
            Class c = obj.getClass();
            // 获取该类的成员变量
            Field f = c.getDeclaredField(fieldName);
            // 取消语言访问检查
            f.setAccessible(true);
            // 给变量赋值
            f.set(obj, value);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

    }

获取属性名数组

   /** 
    * 获取属性名数组 
    * */  
   private String[] getFiledName(Object o){  
    Field[] fields=o.getClass().getDeclaredFields();  
        String[] fieldNames=new String[fields.length];  
    for(int i=0;i<fields.length;i++){  
        System.out.println(fields[i].getType());  
        fieldNames[i]=fields[i].getName();  
    }  
    return fieldNames;  
   }  

 

 

 


学习参考:

http://www.cnblogs.com/gmq-sh/p/5942065.html

https://www.cnblogs.com/LZL-student/p/5967217.html


版权声明:本文为qq_37552636原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。