Java 快速複製兩個類中的相同屬性(無需繼承關係)
阿新 • • 發佈:2018-11-20
今天開發中遇到一個問題,其實也算不上是問題,只是本猿比較懶而已!目前本猿主要做的是介面開發,現在需要將介面提供方的一個類中的部分欄位挪到我自己的專案來,然而奈何本猿太懶,不想一個一個set、get……
要不然說“懶”是促進社會科技進步的最大動力呢!!!鑑於這一情況,本猿果斷使用了Spring神器的一個工具包——BeansUtils,簡直帥出了宇宙!下面就讓本猿來帶你們見識見識這個逆天的工具。
Spring這裡不多做說明了,簡而言之言而簡之就是一個大容器,至於容器中有什麼東西以後有時間再細說,這個大容器呢在我們開發中經常用來作為一個管家管理我們的bean,既然管理bean,那我這個類到類的屬性應該也可以管的咯!
上demo:
這是一個類,暫且定他為遠端的,
package com.fcloud.mobile.common.demo; /** * Created by Promonkey on 2017/3/14. */ public class LongDistanceBean{ /** * 使用者ID */ private String userId; /** * 居住城市 */ private String liveCity; /** * 工作城市 */ private String workCity; /** * 工作電話 */ private String workPhone; /** * 構造器 */ public LongDistanceBean(String userId, String liveCity, String workCity, String workPhone) { this.userId = userId; this.liveCity = liveCity; this.workCity = workCity; this.workPhone= workPhone; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getLiveCity() { return liveCity; } public void setLiveCity(String liveCity) { this.liveCity = liveCity; } public String getWorkCity() { return workCity; } public void setWorkCity(String workCity) { this.workCity = workCity; } public String getWorkPhone() { return workPhone; } public void setWorkPhone(String workPhone) { this.workPhone = workPhone; } @Override public String toString() { return "LongDistanceBean{" + "userId='" + userId + '\'' + ", liveCity='" + liveCity + '\'' + ", workCity='" + workCity + '\'' + ", workPhone='" + workPhone + '\'' + '}'; } }
再定一個本地的類:
package com.fcloud.mobile.common.demo; /** * Created by Promonkey on 2017/3/14. */ public class LocalBean{ /** * 使用者ID */ private String userId; /** * 居住城市 */ private String liveCity; /** * 工作城市 */ private String workCity; /** * 工作電話 */ private String workPhone; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getLiveCity() { return liveCity; } public void setLiveCity(String liveCity) { this.liveCity = liveCity; } public String getWorkCity() { return workCity; } public void setWorkCity(String workCity) { this.workCity = workCity; } public String getWorkPhone() { return workPhone; } public void setWorkPhone(String workPhone) { this.workPhone = workPhone; } @Override public String toString() { return "LocalBean{" + "userId='" + userId + '\'' + ", liveCity='" + liveCity + '\'' + ", workCity='" + workCity + '\'' + ", workPhone='" + workPhone + '\'' + '}'; } }
現在假設我呼叫某個介面獲得了遠端端Bean的物件及他的資料:
LongDistanceBeand longDistance= new LongDistanceBean("10001", "江西", "上海", "100-110-111");
但是我需要用本地的一個類去封裝這些資料,而且不能通過繼承(子類父類)的關係去實現,實際開發中經常會遇到這種情況。怎麼辦呢?別告訴我你想一個一個 localBean.setUserId(longDistance.getUserId())……, 那我告訴你我要封裝的資料其實有二十幾個欄位,你給我去一個一個set!
這時候我們就需要Spring神器了:
public static void main(String[] args) {
LongDistanceBean longDistance= new LongDistanceBean("10001", "江西", "上海", "100-110-111");
System.out.println(longDistance);
LocalBean localBean= new LocalBean();
System.out.println(LocalBean);
System.out.println("開始複製");
BeanUtils.copyProperties(longDistance, localBean);
System.out.println(longDistance);
System.out.println(localBean);
}
Copy結束:
BeanUtils.copyProperties(source, target);
source —— 複製源
target —— 賦值目標
建議自己去體會一下,需要的jar包,:
maven專案:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>