类的属性和值的操作

/**
     * 给属性赋值
     * @param sum
     */
    public void setFieldValue(CsFsessum sum) {
        String[] fieldNames = getFiledName(sum);
        for(int j=0 ; j<fieldNames.length ; j++){     //遍历所有属性
            String name = fieldNames[j];    //获取属性的名字
            if(name.startsWith("timeSt")) {
                setFieldValueByName(sum, name, 0l);
            }
        }
        
    }
    
    /**  
     * 获取属性名数组  
     * */  
    private static String[] getFiledName(Object o){  
        Field[] fields=o.getClass().getDeclaredFields();  
        String[] fieldNames=new String[fields.length];  
        for(int i=0;i<fields.length;i++){  
            fieldNames[i]=fields[i].getName();
        }  
        return fieldNames;  
    }
    
    //通过属性名给属性赋值
    private 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) {    
              logger.info("给对象字段名赋值出错 { }",e.getMessage());    
          }   
         
    }
    
    
    /* 根据属性名获取属性值  
     * */
    private static 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) {    
            return null;    
        }    
    }

 

posted @ 2019-06-29 15:29  夜空中最亮的❤  阅读(319)  评论(0编辑  收藏  举报