您的位置:首页 > 编程语言 > Java开发

获得java类的所有属性

2016-09-08 14:26 246 查看
public static void main(String a[]){
Field[] parameters=  ModelVo.class.getDeclaredFields();
for(Field f :parameters){
System.out.println(f.getName());
}
}


另外一种方式

import java.lang.reflect.Field;

public class GetField {

public static void main(String[] args) {
try {
Class clazz = Class.forName("");//根据类名获得其对应的Class对象 写上你想要的类名就是了 注意是全名 如果有包的话要加上 比如java.Lang.String
Field[] fields = clazz.getDeclaredFields();//根据Class对象获得属性 私有的也可以获得
for(Field f : fields) {
System.out.println(f.getType().getName());//打印每个属性的类型名字
}
} catch(Exception e) {
e.printStackTrace();
}

}
}


/** 

 * 根据属性名获取属性值 

 * */  

   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;    

       }    

   }   

     

   /** 

    * 获取属性名数组 

    * */  

   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;  

   }  

     

   /** 

    * 获取属性类型(type),属性名(name),属性值(value)的map组成的list 

    * */  

   private List getFiledsInfo(Object o){  

    Field[] fields=o.getClass().getDeclaredFields();  

        String[] fieldNames=new String[fields.length];  

        List list = new ArrayList();  

        Map infoMap=null;  

    for(int i=0;i<fields.length;i++){  

        infoMap = new HashMap();  

        infoMap.put("type", fields[i].getType().toString());  

        infoMap.put("name", fields[i].getName());  

        infoMap.put("value", getFieldValueByName(fields[i].getName(), o));  

        list.add(infoMap);  

    }  

    return list;  

   }  

     

   /** 

    * 获取对象的所有属性值,返回一个对象数组 

    * */  

   public Object[] getFiledValues(Object o){  

    String[] fieldNames=this.getFiledName(o);  

    Object[] value=new Object[fieldNames.length];  

    for(int i=0;i<fieldNames.length;i++){  

        value[i]=this.getFieldValueByName(fieldNames[i], o);  

    }  

    return value;  

   } 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java