「Java工具類」Apache工具類SerializationUtils序列化工具類同時可以深度克隆對象
介紹語
本號主要是Java常用關鍵技術點,通用工具類的分享;以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+docker等集成框架的技術分享;datax、kafka、flink等大數據處理框架的技術分享。文章會不斷更新,歡迎碼友關注點贊收藏轉發!
望各位碼友點擊關注,沖1000粉。后面會錄制一些視頻教程,圖文和視頻結合,比如:圖書介紹網站系統、搶購系統、大數據中臺系統等。技術才是程序猿的最愛,碼友們沖啊
如果碼友覺得代碼太長,可以從頭到尾快速掃射一遍,了解大概即可。覺得有用后再轉發收藏,以備不時之需。
正文:
序列化和反序列化,在java中是一個重要的知識點,但是可能很多經驗不足的同學并不認為重要,也不是很清楚它的作用。我說兩點
-
序列化對象后可以將當前狀態的對象存儲在數據庫或者文件中,需要時可反序列化出當前對象;
-
序列化對象后可以方便在網絡中進行傳輸當前狀態的對象,接收方接收到二進制的對象后可以反序列化出該對象;
SerializationUtils工具類時apache commons包中的工具類,序列化和反序列化,是基于jdk自帶的序列化,速度慢,占空間,不如Protostuff、Hessian、Kryo等專業序列化工具效率高,項目中用的不是很多。但是我還是分享出來,畢竟很多項目并不那么注重效率,這時候用這個工具類就很方便咯。
SerializationUtils序列化和反序列化使用例子
import com.javabage.tools.entity.Student;
import org.apache.commons.lang3.SerializationUtils;
import org.junit.Test;
?
import java.time.LocalDate;
?
public class SerializationUtilsTest {
?
@Test
public void test() {
Student stu = new Student("zhang三", 12, "睡天安門廣場旁", LocalDate.now());
?
// 將stu序列化,序列化后的對象可以把當前對象存儲起來
byte[] stuByte = SerializationUtils.serialize(stu);
// 模擬stu從文件讀取二進制然后還原為stu對象
Student stuObject = SerializationUtils.deserialize(stuByte);
System.out.println(stuObject.toString());
?
// 深度拷貝stu對象
Student stuCopy = SerializationUtils.clone(stu);
System.out.println(stu == stuCopy);
System.out.println(stuCopy.toString());
}
?
}
// 控制臺輸出
Student(name=zhang三, age=12, address=睡天安門廣場旁, birthday=2021-11-14)
false
Student(name=zhang三, age=12, address=睡天安門廣場旁, birthday=2021-11-14)
工具類源碼:
直接引入工具類的jar包即可
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
其他相關類
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
?
import java.io.Serializable;
import java.time.LocalDate;
?
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {
private String name;
private int age;
private String address;
private LocalDate birthday;
}
鄙人編碼十年多,在項目中也積累了一些工具類,很多工具類在每個項目都有在用,很實用。大部分是鄙人封裝的,有些工具類是同事封裝的,有些工具類已經不記得是ctrl+c的還是自己封裝的了,現在有空就會總結項目中大部分的工具類,分享給各位碼友。如果文章中涉及的代碼有侵權行為請通知鄙人處理。
計劃是先把工具類整理出來,正所謂工欲善其事,必先利其器。項目中不管是普通單體項目還是多模塊maven項目或是分布式微服務,一部分功能模塊都是可以重用的,工具類模塊就是其中之一。

浙公網安備 33010602011771號