Java序列化一些简单的总结

1.什么是序列化?

Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。

2.如何进行序列化?

要序列化一个对象,这个对象所在类就必须实现Java序列化的接口:java.io.Serializable。

3.一个简单的序列化例子

import java.io.Serializable;

public class UserDemo implements Serializable{

    
    private static final long serialVersionUID = -8475669200846811112L;
    
    private String username;
    private int age;

    public String getUsername(){
        
        return username;
    }
    public void setUsername(String uesrname){
    
        this.username = uesrname;
    }
    public int getAge(){
        
        return age;
    }
    public void setAge(int age){
    
        this.age = age;
    }
    
    @Override
    
    public String toString(){
        
        return "User{" + "username ='" + username + '\'' +  ", 
                          age ='" + age + '\'' + '}';
    
    }
}

4.序列化于反序列化

可以借助commons-lang3工具包里面的类实现对象的序列化及反序列化。

import org.apache.commons.lang3.SerializationUtils;

public class DemoTest{
    
    public static void main(Stiring[] args){
        
        UserDemo user = new Username();
        user.setUsername("joker");
        usersetAge(20);
        
        byte[] bytes = SerializationUtils.serialize(user);
        UserDemo uu = SerializationUtils.deserialize(bytes);
        
        System.out.println(uu);
    }
}

输出为:
UserDemo{username ='joker', age = 20}

5.序列化注意事项

  • 序列化对象必须实现序列化接口。

  • 序列化对象里面的属性是对象的话也要实现序列化接口。

  • 类的对象序列化后,类的序列化ID不能轻易修改,不然反序列化会失败。

  • 类的对象序列化后,类的属性有增加或者删除不会影响序列化,只是值会丢失。

  • 如果父类序列化了,子类会继承父类的序列化,子类无需添加序列化接口。

  • 如果父类没有序列化,子类序列化了,子类中的属性能正常序列化,但父类的属性会丢失,不能序列化。

  • 用Java序列化的二进制字节数据只能由Java反序列化,不能被其他语言反序列化。如果要进行前后端或者不同语言之间的交互一般需要将对象转变成Json/Xml通用格式的数据,再恢复原来的对象。

  • 如果某个字段不想序列化,在该字段前加上transient关键字即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值