java實體對象與Map之間的轉換工具類代碼實例
更新時間:2019年12月26日 09:49:34 作者:小破孩樓主
這篇文章主要介紹了java實體對象與Map之間的轉換工具類代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
這篇文章主要介紹了java實體對象與Map之間的轉換工具類代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Map接口中鍵和值一一映射. 可以通過鍵來獲取值。
- 給定一個鍵和一個值,你可以將該值存儲在一個Map對象. 之后,你可以通過鍵來訪問對應的值。
- 當訪問的值不存在的時候,方法就會拋出一個NoSuchElementException異常.
- 當對象的類型和Map里元素類型不兼容的時候,就會拋出一個 ClassCastException異常。
- 當在不允許使用Null對象的Map中使用Null對象,會拋出一個NullPointerException 異常。
- 當嘗試修改一個只讀的Map時,會拋出一個UnsupportedOperationException異常。
代碼如下
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class EntityUtils {
/**
* 實體類轉Map
* @param object
* @return
*/
public static Map<String, Object> entityToMap(Object object) {
Map<String, Object> map = new HashMap();
for (Field field : object.getClass().getDeclaredFields()){
try {
boolean flag = field.isAccessible();
field.setAccessible(true);
Object o = field.get(object);
map.put(field.getName(), o);
field.setAccessible(flag);
} catch (Exception e) {
e.printStackTrace();
}
}
return map;
}
/**
* Map轉實體類
* @param map 需要初始化的數據,key字段必須與實體類的成員名字一樣,否則賦值為空
* @param entity 需要轉化成的實體類
* @return
*/
public static <T> T mapToEntity(Map<String, Object> map, Class<T> entity) {
T t = null;
try {
t = entity.newInstance();
for(Field field : entity.getDeclaredFields()) {
if (map.containsKey(field.getName())) {
boolean flag = field.isAccessible();
field.setAccessible(true);
Object object = map.get(field.getName());
if (object!= null && field.getType().isAssignableFrom(object.getClass())) {
field.set(t, object);
}
field.setAccessible(flag);
}
}
return t;
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return t;
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Spring Boot Redis客戶端遠程操作實現過程解析
這篇文章主要介紹了Spring Boot Redis客戶端遠程操作實現過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04
詳解mybatis-plus的 mapper.xml 路徑配置的坑
這篇文章主要介紹了詳解mybatis-plus的 mapper.xml 路徑配置的坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08
SpringBoot使用redis實現session共享功能
這篇文章主要介紹了pringboot項目使用redis實現session共享,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-05-05
Java經典算法匯總之選擇排序(SelectionSort)
選擇排序也是比較簡單的一種排序方法,原理也比較容易理解,選擇排序在每次遍歷過程中只記錄下來最小的一個元素的下標,待全部比較結束之后,將最小的元素與未排序的那部分序列的最前面一個元素交換,這樣就降低了交換的次數,提高了排序效率。2016-04-04

