在表單綁定、動態配置、緩存序列化等場景,常需在 Java Bean 與 Map<String, Object> 之間互轉。本文提供一個基於反射的 BeanRefUtil,支援基本型別、包裝型別、String、Date、Integer/int、Long、Double、Boolean 的自動轉換,並自動匹配 Getter/Setter 命名規約。
// Bean → Map
public static Map getFieldValueMap(Object bean)
// Map → Bean
public static void setFieldValue(Object bean, Map valMap)
Field 與 Method。getXxx/setXxx),檢查方法是否存在。Integer.parseInt、Date.parse 等)。// 取值
if ("Date".equals(fieldType)) {
result = fmtDate((Date) fieldVal); // 格式化
}
// 寫值
} else if ("Date".equalsIgnoreCase(fieldType)) {
Date temp = parseDate(value); // 解析 "yyyy-MM-dd" 或 "yyyy-MM-dd HH:mm:ss"
fieldSetMet.invoke(bean, temp);
}
通過反射賦值.
通過反射取值:
flag---false
height---173.5
times---1287932898276
age---27
userName---michael
date---2010-10-24 00:00:00
byte、char、BigDecimal、List/Map 巢狀型別支援。Field/Method 元數據,提升高頻調用效能。