序列化过程中,其对象想要被序列化,那么它的类就要实现 此接口,这个对象的所有属性(包括private属性、包括其引用的对象)都可以被序列化和反序列化来保存、传递。
比如:在本实例中,DivSort必须实现Serializable接口,不实现的话,会在序列化过程中报错,一般会在o.writeObject(obj)的这一步骤报错。
import java.io.Serializable;
public class DivSort implements Serializable{
public int age;
public String name;
public int score;
public DivSort(int age, String name, int score) {
super();
this.age = age;
this.name = name;
this.score = score;
public int getAge() {
return age;
public void setAge(int age) {
this.age = age;
public String getName() {
return name;
public void setName(String name) {
this.name = name;
public int getScore() {
return score;
public void setScore(int score) {
this.score = score;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
public class ArrayToByte{
private static final long serialVersionUID = 1L;
public static void main(String[] args) throws IOException, ClassNotFoundException {
// TODO Auto-generated method stub
ArrayList<DivSort> list1=new ArrayList<DivSort>();
byte[] b=null;
list1.add(new DivSort(12,"zhansan",234));
list1.add(new DivSort(13,"zhansan",234));
list1.add(new DivSort(14,"zhansan",234));
for(DivSort l:list1) {
System.out.println(l.age);
System.out.println("start");
b=ArrayToByte.serialize(list1);
System.out.println(b);
System.out.println(ArrayToByte.deserialize(b));
list1=(ArrayList<DivSort>) ArrayToByte.deserialize(b);
for(DivSort d:list1) {
System.out.println(d.getAge());
public static byte[] serialize(Object obj) throws IOException {
try(ByteArrayOutputStream b = new ByteArrayOutputStream()){
try(ObjectOutputStream o = new ObjectOutputStream(b)){
o.writeObject(obj);
return b.toByteArray();
public static Object deserialize(byte[] bytes) throws IOException, ClassNotFoundException {
try(ByteArrayInputStream b = new ByteArrayInputStream(bytes)){
try(ObjectInputStream o = new ObjectInputStream(b)){
return o.readObject();
2.子类实现Serializable接口,父类没有实现,子类可以序列化吗?
3.类中存在引用对象,这个类对象在什么情况下可以实现序列化?
4.同一个对象多次序列化之间有属性更新,前后的序列化有什么区别?
Java:jackson处理LocalDateTime序列化的时候报错InvalidDefinitionException
Java:jackson处理LocalDateTime序列化的时候报错InvalidDefinitionException