java實(shí)體對(duì)象與Map之間的轉(zhuǎn)換工具類(lèi)代碼實(shí)例
這篇文章主要介紹了java實(shí)體對(duì)象與Map之間的轉(zhuǎn)換工具類(lèi)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
Map接口中鍵和值一一映射. 可以通過(guò)鍵來(lái)獲取值。
- 給定一個(gè)鍵和一個(gè)值,你可以將該值存儲(chǔ)在一個(gè)Map對(duì)象. 之后,你可以通過(guò)鍵來(lái)訪問(wèn)對(duì)應(yīng)的值。
- 當(dāng)訪問(wèn)的值不存在的時(shí)候,方法就會(huì)拋出一個(gè)NoSuchElementException異常.
- 當(dāng)對(duì)象的類(lèi)型和Map里元素類(lèi)型不兼容的時(shí)候,就會(huì)拋出一個(gè) ClassCastException異常。
- 當(dāng)在不允許使用Null對(duì)象的Map中使用Null對(duì)象,會(huì)拋出一個(gè)NullPointerException 異常。
- 當(dāng)嘗試修改一個(gè)只讀的Map時(shí),會(huì)拋出一個(gè)UnsupportedOperationException異常。
代碼如下
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class EntityUtils {
/**
* 實(shí)體類(lèi)轉(zhuǎn)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轉(zhuǎn)實(shí)體類(lèi)
* @param map 需要初始化的數(shù)據(jù),key字段必須與實(shí)體類(lèi)的成員名字一樣,否則賦值為空
* @param entity 需要轉(zhuǎn)化成的實(shí)體類(lèi)
* @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;
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于Java反射的map自動(dòng)裝配JavaBean工具類(lèi)設(shè)計(jì)示例代碼
- Java如何將任意類(lèi)型的Object對(duì)象轉(zhuǎn)換為相應(yīng)的實(shí)體對(duì)象
- java中給實(shí)體對(duì)象屬性的空值賦默認(rèn)值
- java開(kāi)發(fā)BeanUtils類(lèi)解決實(shí)體對(duì)象間賦值
- Java 判斷實(shí)體對(duì)象及所有屬性是否為空的操作
- 淺談Java實(shí)體對(duì)象的三種狀態(tài)以及轉(zhuǎn)換關(guān)系
- Java利用反射自動(dòng)封裝成實(shí)體對(duì)象的方法
- Java如何通過(guò)反射將map轉(zhuǎn)換為實(shí)體對(duì)象
相關(guān)文章
Spring Boot Redis客戶端遠(yuǎn)程操作實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Spring Boot Redis客戶端遠(yuǎn)程操作實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
詳解mybatis-plus的 mapper.xml 路徑配置的坑
這篇文章主要介紹了詳解mybatis-plus的 mapper.xml 路徑配置的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Java如何將若干時(shí)間區(qū)間進(jìn)行合并的方法步驟
這篇文章主要介紹了Java如何將若干時(shí)間區(qū)間進(jìn)行合并的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
SpringBoot使用redis實(shí)現(xiàn)session共享功能
這篇文章主要介紹了pringboot項(xiàng)目使用redis實(shí)現(xiàn)session共享,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-05-05
Java經(jīng)典算法匯總之選擇排序(SelectionSort)
選擇排序也是比較簡(jiǎn)單的一種排序方法,原理也比較容易理解,選擇排序在每次遍歷過(guò)程中只記錄下來(lái)最小的一個(gè)元素的下標(biāo),待全部比較結(jié)束之后,將最小的元素與未排序的那部分序列的最前面一個(gè)元素交換,這樣就降低了交換的次數(shù),提高了排序效率。2016-04-04
SpringBoot后端接口的實(shí)現(xiàn)(看這一篇就夠了)
這篇文章主要介紹了SpringBoot后端接口的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
druid升級(jí)后sql監(jiān)控頁(yè)面為空白的解決
這篇文章主要介紹了druid升級(jí)后sql監(jiān)控頁(yè)面為空白的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06

