旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

java完成序列化的要领【JAVA教程】,java,序列化

作者:搜教程发布时间:2019-12-26分类:JAVA教程浏览:112评论:0


导读:1、完成序列化:1)运用Serializable接口完成序列化起首我们定义一个对象类UserpublicclassUserimplementsSeriali...

1、完成序列化:

1)运用Serializable接口完成序列化

起首我们定义一个对象类User

public class User implements Serializable {
    //序列化ID
    private static final long serialVersionUID = 1L;
    private int age;
    private String name;
    //getter和setter要领、
    //toString要领}

接下来,在Test类中去完成序列化和反序列化。

public class Test {
    public static void main(String[] args) throws Exception, IOException {
        //SerializeUser();
        DeSerializeUser();
    }
    //序列化要领
    private static void SerializeUser() throws FileNotFoundException, IOException {
        User user = new User();
        user.setName("Java的架构师手艺栈");
        user.setAge(24);
        //序列化对象到文件中
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("G://Test/template"));
        oos.writeObject(user);
        oos.close();
        System.out.println("序列化对象胜利");
    }
    //反序列化要领
    private static void DeSerializeUser() throws FileNotFoundException, IOException{
        File file = new File("G://Test/template");
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
        User newUser = (User)ois.readObject();
        System.out.println("反序列化对象胜利"+newUser.toString());
    }}

2)运用Externalizable接口完成序列化

起首,定义一个User1类

public class User1 implements Externalizable{
    private int age;
    private String name;
    //getter、setter
    //toString要领
    
    public User1() {}
    
    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
    }
    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
    }}

Externalizable和Serializable接口的区分:

1)Externalizable继续自Serializable接口

2)需要我们重写writeExternal()与readExternal()要领

3)完成Externalizable接口的类必需要供应一个public的无参的组织器。

2、作用:

1)序列化就是一种用来处置惩罚对象流的机制,所谓对象流也就是将对象的内容举行流化,可以对流化后的对象举行读写操纵,也可以将流化后的对象传输与收集之间;

2)为了处理对象流读写操纵时大概激发的问题(假如不举行序列化,大概会存在数据乱序的问题)

3)序列化除了可以完成对象的耐久化以外,还可以用于对象的深度克隆

3、序列化的运用场景

1)永久性保留对象,保留对象的字节序列到当地文件或许数据库中;

2)经由过程序列化以字撙节的情势使对象在收集中举行通报和吸收;

3)经由过程序列化在历程间通报对象;

更多java学问请关注java基础教程栏目。

以上就是java完成序列化的要领的细致内容,更多请关注ki4网别的相干文章!

标签:java序列化


欢迎 发表评论: