java oj,对象序列化

现有类Person和Book,其定义如下:

import java.io.Serializable;
import java.time.LocalDate;

public class Person implements Serializable{

private static final long serialVersionUID = 1L;
private String name ;
private String gender ;
private LocalDate birthday ;
private String biography ;

public Person() {

}

public Person(String name , String gender , String biography ,
int year , int month ,int day) {
this.name = name ;
this.gender = gender ;
this.biography = biography ;
this.birthday = LocalDate.of(year , month , day) ;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public LocalDate getBirthday() {
return birthday;
}
public void setBirthday(LocalDate birthday) {
this.birthday = birthday;
}
public String getBiography() {
return biography;
}
public void setBiography(String biography) {
this.biography = biography;
}

@Override
public String toString() {
return "name: " + name + " , gender: " + gender + " , birthday: " 
+ birthday + " , biography: " + biography ;
}

}





import java.io.Serializable;

public class Book implements Serializable{

private static final long serialVersionUID = 1L;

private String name;
private Person author;
private int price;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Person getAuthor() {
return author;
}

public void setAuthor(Person author) {
this.author = author;
}

public int getPrice() {
return price;
}

public void setPrice(int price) {
this.price = price;
}

public Book() {

}

public Book(String name,Person author,int price) {
this.name = name;
this.author = author;
this.price = price;
}

@Override
public String toString() {
return "name: " + name + "\nauthor: " + author + "\nprice: " + price ;
}

}

有一段程序用objectOutputStream的writeobject()方法连续向文件dict.dic中写入了5个Book类型的对象。现请你写一段程序将这5个对象读出来。
注意:你的程序中要把Person和Book类的定义复制过去。
输入输出如下

img

import java.io.Serializable;
import java.time.LocalDate;
import java.io.*;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) throws Exception{
        ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream("dict.dic"));
        Scanner in=new Scanner(System.in);
        int num=in.nextInt();
        for(int i=1;i<num;i++){
            objectInputStream.readObject();
        }
        System.out.println(objectInputStream.readObject());
        objectInputStream.close();
    }
}

class Person implements Serializable{

    private static final long serialVersionUID = 1L;
    private String name ;
    private String gender ;
    private LocalDate birthday ;
    private String biography ;

    public Person() {

    }

    public Person(String name , String gender , String biography ,
                  int year , int month ,int day) {
        this.name = name ;
        this.gender = gender ;
        this.biography = biography ;
        this.birthday = LocalDate.of(year , month , day) ;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public LocalDate getBirthday() {
        return birthday;
    }
    public void setBirthday(LocalDate birthday) {
        this.birthday = birthday;
    }
    public String getBiography() {
        return biography;
    }
    public void setBiography(String biography) {
        this.biography = biography;
    }

    @Override
    public String toString() {
        return "name: " + name + " , gender: " + gender + " , birthday: "
                + birthday + " , biography: " + biography ;
    }
}

class Book implements Serializable{

    private static final long serialVersionUID = 1L;

    private String name;
    private Person author;
    private int price;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person getAuthor() {
        return author;
    }

    public void setAuthor(Person author) {
        this.author = author;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public Book() {

    }

    public Book(String name,Person author,int price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }

    @Override
    public String toString() {
        return "name: " + name + "\nauthor: " + author + "\nprice: " + price ;
    }
}

可以把5个Book对象保存到List集合,然后用WriteObject方法保存List集合,读取的时候读出List集合,再遍历集合即可。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632