Java常用對(duì)象操作工具代碼實(shí)例
對(duì)象復(fù)制(反射法)
public static void copyProp(Object from, Object to, String... filterProp) { HashSet<String> filterSet = new HashSet<String>(Arrays.asList(filterProp)); Class<?> fromc = from.getClass(); Class<?> toc = to.getClass(); List<Field> to_fields = new ArrayList<Field>() ; while (toc != null) { to_fields.addAll(Arrays.asList(toc.getDeclaredFields())); toc = toc.getSuperclass(); } for (Field to_field : to_fields) { try{ if (filterSet.contains(to_field.getName())||"serialVersionUID".equals(to_field.getName())) { continue; } Field from_field = null; try{ from_field = fromc.getDeclaredField(to_field.getName()); }catch (Exception e){ continue; } from_field.setAccessible(true); Object value = from_field.get(from); if(value==null){ continue; } to_field.setAccessible(true); to_field.set(to, value); }catch (Exception e){ e.printStackTrace(); } } }
- 只copy有值對(duì)象
- 不需要copy的屬性用filterProp
- 是能過(guò)反射屬性注入方法實(shí)現(xiàn),所有屬性的名稱類型必須一樣
對(duì)象復(fù)制(fastJson轉(zhuǎn)換)
單個(gè)
public static <T> T bean2OtherBean(Object bean, Class<T> tClass){ return JSON.parseObject(JSON.toJSONString(bean),tClass); }
列表
public static <T> List<T> list2OtherList(List originList, Class<T> tClass){ List<T> list = new ArrayList<>(); if(!CollectionUtils.isEmpty(originList)){ for (Object obj : originList) { T t = bean2OtherBean(obj,tClass); list.add(t); } } return list; }
fastjson實(shí)現(xiàn),屬性不一樣必須用注解
對(duì)象轉(zhuǎn)MAP
public static <K,V> Map<K,V> bean2map(Object obj) throws IllegalAccessException { Map<String, Object> map = new HashMap<>(); Class<?> clazz = obj.getClass(); for (Field field : clazz.getDeclaredFields()) { field.setAccessible(true); String fieldName = field.getName(); Object value = field.get(obj); map.put(fieldName, value); } return (Map<K, V>) map; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- IDEA 打開(kāi)java文件對(duì)應(yīng)的class路徑的操作步驟
- Java8 使用 stream().sorted()對(duì)List集合進(jìn)行排序的操作
- java jackson 將對(duì)象轉(zhuǎn)json時(shí),忽略子對(duì)象的某個(gè)屬性操作
- java使用compareTo實(shí)現(xiàn)一個(gè)類的對(duì)象之間比較大小操作
- JAVA8 stream中三個(gè)參數(shù)的reduce方法對(duì)List進(jìn)行分組統(tǒng)計(jì)操作
- JAVA對(duì)象和字節(jié)數(shù)組互轉(zhuǎn)操作
- 利用Java反射機(jī)制實(shí)現(xiàn)對(duì)象相同字段的復(fù)制操作
- 使用java反射將結(jié)果集封裝成為對(duì)象和對(duì)象集合操作
- Java8 Stream對(duì)兩個(gè) List 遍歷匹配數(shù)據(jù)的優(yōu)化處理操作
- java中char對(duì)應(yīng)的ASCII碼的轉(zhuǎn)化操作
相關(guān)文章
uploadify上傳及后臺(tái)文件合法性驗(yàn)證的代碼解析
這篇文章主要介紹了uploadify上傳及后臺(tái)文件合法性驗(yàn)證的代碼解析,整段代碼分為后臺(tái)上傳方法,文件合法性驗(yàn)證類,前端上傳js,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11Java事務(wù)管理學(xué)習(xí)之JDBC詳解
這篇文章主要介紹了Java事務(wù)管理學(xué)習(xí)之JDBC的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03Spring Boot(二)之web綜合開(kāi)發(fā)
本篇文章為大家介紹spring boot的其它特性(有些未必是spring boot體系桟的功能,但是是spring特別推薦的一些開(kāi)源技術(shù)本文也會(huì)介紹),對(duì)了這里只是一個(gè)大概的介紹,特別詳細(xì)的使用我們會(huì)在其它的文章中來(lái)展開(kāi)說(shuō)明2017-05-05關(guān)于@Autowired的使用及注意事項(xiàng)
這篇文章主要介紹了關(guān)于@Autowired的使用及注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Mybatis-plus:${ew.sqlselect}用法說(shuō)明
這篇文章主要介紹了Mybatis-plus:${ew.sqlselect}用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06SpringBoot結(jié)合Redis配置工具類實(shí)現(xiàn)動(dòng)態(tài)切換庫(kù)
本文主要介紹了SpringBoot結(jié)合Redis配置工具類實(shí)現(xiàn)動(dòng)態(tài)切換庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08利用Java工具類Hutool實(shí)現(xiàn)驗(yàn)證碼校驗(yàn)功能
這篇文章主要介紹了利用Java工具類Hutool實(shí)現(xiàn)驗(yàn)證碼校驗(yàn)功能,利用Hutool實(shí)現(xiàn)驗(yàn)證碼校驗(yàn),校驗(yàn)的Servlet與今天的第一篇是一樣的,唯一就是驗(yàn)證碼的生成是不一樣的,利用Hutool生成驗(yàn)證碼更快捷.需要的朋友可以參考下2022-10-10Java的PriorityBlockingQueue優(yōu)先級(jí)阻塞隊(duì)列代碼實(shí)例
這篇文章主要介紹了Java的PriorityBlockingQueue優(yōu)先級(jí)阻塞隊(duì)列代碼實(shí)例,PriorityBlockingQueue顧名思義是帶有優(yōu)先級(jí)的阻塞隊(duì)列,為了實(shí)現(xiàn)按優(yōu)先級(jí)彈出數(shù)據(jù),存入其中的對(duì)象必須實(shí)現(xiàn)comparable接口自定義排序方法,需要的朋友可以參考下2023-12-12