Java反射機制應用(JavaBean轉換Map形式)

最近http傳參的時,看着名值對,突然就想到了一個java反射,起初沒覺得什麼,不過後來就想到了下面的東西。
是不是可以將javaBean的屬性和值轉換成http的參數格式呢?或者說,轉換成更加方便得map是不是更合適一點?
首先,先說說什麼事java的反射吧,博主個人理解,通俗的講就是:java類的每一種組成元素也是對應着一個類。
java的組成元素:類,類的屬性,類的方法。
1、類原本就是一類事物的抽象,那對類進行抽象,就是Class;
2、類的屬性,也就是一種狀態的表示,抽象爲Field;
3、類的方法,行爲的表示,抽象理解爲Method。


下面做一個反射的簡單的小應用,JavaBean轉換成Map的Util方法
package com.bean.util;


import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;


public final class BeanUtil {
/**
* constructor is private 
* this class just provide static methods
*/
private BeanUtil() {
}

/**
* transfer a simple object's attributes to map
* but the object dosen't contain one or more complex object
* @param obj
* @return
*/
public static Map<String,String> beanToMap (final Object obj){
final Map<String,String> resultMap = new HashMap<String,String>();
final Class<?> clz = obj.getClass();
final Field[] fields = clz.getDeclaredFields();
for(Field field : fields){
try {
final String fieldName = field.getName();
//set the field is accessible
field.setAccessible(true);
final Object fieldValue = field.get(obj);
final String value = fieldValue!=null ? String.valueOf(fieldValue) : "";
resultMap.put(fieldName,value);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return resultMap;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章