這篇文章主要講解了“怎么自定義java拷貝工具類”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么自定義java拷貝工具類”吧!
創新互聯建站2013年開創至今,先為鎮江等服務建站,鎮江等地企業,進行企業商務咨詢服務。為鎮江企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
/** * @Description * @Author Depeng * @Date 2019/8/8 23:33 */ public class BeanCopyTool { static final String FORMAT_DATE = "yyyy_MMdd HH:mm:ss"; public static final String STRING = "java.lang.String"; public static final String DATE = "java.util.Date"; /** * Bean拷貝方法 * 支持拷貝屬性名,類別相同的屬性 * 支持Date和String類型的同名屬性拷貝 * @param src * @param target */ public static void copyByName(Object src, Object target) { if (src == null || target == null) { return; } try { Map<String, Field> srcFieldMap = getAssignableFieldsMap(src); Map<String, Field> targetFieldMap = getAssignableFieldsMap(target); for (String srcFieldName : srcFieldMap.keySet()) { Field srcField = srcFieldMap.get(srcFieldName); if (srcField == null) { continue; } //變量名是否相同 if (!targetFieldMap.keySet().contains(srcFieldName)) { continue; } Field targetField = targetFieldMap.get(srcFieldName); if (targetField == null) { continue; } //類型是否相同 if (!srcField.getType().equals(targetField.getType())) { Object value = srcField.get(src); //判斷源對象中屬性是否為空 if (value != null) { //String轉Date if (STRING.equals(srcField.getType().getName()) && DATE.equals(targetField.getType().getName())) { DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(FORMAT_DATE); DateTime dateTime = dateTimeFormatter.parseDateTime((String) value); value = dateTime.toDate(); } //Date轉String else if (DATE.equals(srcField.getType().getName()) && STRING.equals(targetField.getType().getName())) { value = DateTimeUtil.dateToStr((Date) value, FORMAT_DATE); } targetField.set(target, value); } continue; } targetField.set(target, srcField.get(src)); } } catch (Exception e) { throw new RuntimeException("MyBeanUtil類Bean拷貝異常: " + e.getMessage()); } return; } private static Map<String, Field> getAssignableFieldsMap(Object obj) { if (obj == null) { return new HashMap<String, Field>(); } Map<String, Field> fieldMap = new HashMap<String, Field>(); for (Field field : obj.getClass().getDeclaredFields()) { // 過濾不需要拷貝的屬性 if (Modifier.isStatic(field.getModifiers()) || Modifier.isFinal(field.getModifiers())) { continue; } field.setAccessible(true); fieldMap.put(field.getName(), field); } return fieldMap; } }
感謝各位的閱讀,以上就是“怎么自定義java拷貝工具類”的內容了,經過本文的學習后,相信大家對怎么自定義java拷貝工具類這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!
分享標題:怎么自定義java拷貝工具類
文章轉載:http://vcdvsql.cn/article44/pdssee.html
成都網站建設公司_創新互聯,為您提供服務器托管、營銷型網站建設、面包屑導航、定制開發、網站收錄、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯