ファイルからArrayListを読み込んでいるのですが、取得できる値が
Mem=[hello.Member@404b9385, hello.Member@6d311334]
というものです。
書き込みをした
Mem = [["sakura", 20]["tanpopo", 22)]]
この値を得るようにしたいのですが、その場合どのように書くといいのでしょうか。
そもそも読み込み方が間違っているのでしょうか。
Member.javaファイル
Java
1package hello; 2 3import java.io.Serializable; 4 5public class Member implements Serializable { 6 7 public String name; // 氏名 8 public int age; // 年齢 9 10 Member() { 11 this.name = ""; 12 this.age = 0; 13 } 14 Member(String name, int age) { 15 this.name = name; 16 this.age = age; 17 } 18 19 20}
SerializableSampleTest.javaファイル
Java
1package hello; 2import java.io.FileInputStream; 3 4import java.io.FileOutputStream; 5import java.io.IOException; 6import java.io.ObjectInputStream; 7import java.io.ObjectOutputStream; 8import java.util.ArrayList; 9import java.util.List; 10 11 12public class SerializableSampleTest { 13 public static void main(String[] args) { 14 SerializableSampleTest sst1 = new SerializableSampleTest(); 15 16 List<Member> mb1 = new ArrayList<Member>(); 17 // 一人目 18 mb1.add(new Member("sakura", 20)); 19 // 二人目 20 mb1.add(new Member("tanpopo", 22)); 21 sst1.write(mb1); 22 23 sst1.read(); 24 } 25 26 public void write(java.util.List<Member> Mem) { 27 // シリアライズ 28 try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("member", true))) { 29 oos.writeObject(Mem); 30 System.out.println("シリアライズ完了"); 31 oos.close(); 32 33 } catch (IOException e) { 34 System.out.println("error"); 35 e.printStackTrace(); 36 } 37 } 38 39 public java.util.List<Member> read(){ 40 List<Member> Mem = new ArrayList<Member>(); 41 42 // デシリアライズ 43 try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("member"))) { 44 Mem = (ArrayList) ois.readObject(); 45 System.out.println("Mem="+Mem); 46 for(int i=0; i<Mem.size(); i++) { 47 System.out.println(Mem.get(i)); 48 } 49 50 System.out.println("デシリアライズ完了"); 51 ois.close(); 52 } catch (IOException | ClassNotFoundException e) { 53 System.out.println("error"); 54 e.printStackTrace(); 55 } 56 return Mem; 57 } 58 59 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/23 12:17