2014-03-17 2 views
0

Допустим, у меня есть ArrayList, который содержит экземпляры нескольких классов, которые простираются от класса «Люди» (называет это).ArrayList Сериализация с несколькими экземплярами/расширениями

Пример: Пример две строки Имя и Название курса

ArrayList<People> people = new ArrayList<>(); 
people.add(new Teacher("Mrs. Doe","Math")); 
people.add(new Student("Bob","Math")); 
people.add(new Student("Sue","Math")); 
people.add(new Student("Joe","Math")); 

Быстрый пример структуры этих классов:

abstract class People implements Serializable 
    { 
     String name; 
     String course; 
     ... 
     private People(String newName, String newCourse) 
     { 
      this.name = newName; 
      ... 
     } 
     @Override 
     public String toString(){return...} 
    } 
    public class Teacher extends People 
    { 
     public class Teacher... yada-yada{ 
     super(variables)} 
     @Override String toString(){return...}... 
    } 
    public class Student extends People 
    { 
     public class Teacher... yada-yada{ 
     super(variables)} 
     @Override String toString(){return...}... 
    } 

Можно ли вывести ArrayList в файл без ошибок (хе-хе)?

Ошибка: java.io.NotSerializableException: mvc.Model

Она орет на меня этой линии: out.writeObject(people);

, что не разрешено? Не так ли легко? Могут ли эти дополнительные экземпляры вмешиваться в это? Я сделал некоторый быстрый грязный код, создав новый список без каких-либо дополнительных экземпляров, и он сработал.

Спасибо, продвинутый!

ответ

0

Вы пробовали написать список массивов без toString. Вы можете сериализовать класс, а затем написать ArrayList так же, как и любой другой объект.

Запись ArrayList:

FileOutputStream fos = new FileOutputStream(filename); 
    ObjectOutputStream oos = new ObjectOutputStream(fos); 
    oos.writeObject(ARRAY_NAME); 

Только не забудьте включить следующие декодировать сериализации:

private static final long serialVersionUID = 123456; 

Чтение ArrayList: При попытке прочитать ArrayList обратно , вы могли бы сделать это: (пока это из того же сериализованного класса)

FileInputStream fis = new FileInputStream(filename); 
    ObjectInputStream ois = new ObjectInputStream(fis); 
    ARRAY_NAME = (ARRAY_TYPE_CAST)ois.readObject(); 
0

Возможно ли вывести ArrayList в файл без каких-либо ошибок (хе-хе)?

Продлить Arraylist и реализовать java.io.Serializable как это -

public class MyList extends ArrayList implements java.io.Serializable 

Для вас сериализовать объект, который нужно расширить java.io.Serializable. Так как вам нужно сериализовать ArrayList, просто пропустите его.

PS - Ваш простой вопрос поможет вам получить больше помощи.

Смежные вопросы