Я получаю ошибку как ClassCastException в приведенном ниже коде - PullRequest
0 голосов
/ 11 июля 2019

Я новичок в Java, и я учусь десериализации, и при этом я получаю classcastexception

Я сделал сериализацию в одном классе и десериализации в другом

сериализация

zipfile f = new zipfile(30,"kavin");

ArrayList<zipfile> a = new ArrayList<zipfile>(101);
a.add(f);

String file = "def.txt";
try {
    FileOutputStream fi = new FileOutputStream(file);
    ObjectOutputStream s = new ObjectOutputStream(fi);

    s.writeObject(f);
    System.out.println(f.age);
    s.close();
    fi.close();
} catch (FileNotFoundException e) 
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}
catch (IOException e)
{
    e.printStackTrace();
}

десериализация

String file = "def.txt";


try {
    FileInputStream fi = new FileInputStream(file);
    ObjectInputStream s = new ObjectInputStream(fi);
    f=(deserialization)s.readObject();
    System.out.println(f.age);
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
catch (IOException e)
{
    e.printStackTrace();
} 
catch (ClassNotFoundException e)
{
    e.printStackTrace();
}

}

output

Исключение в потоке "main" java.lang.ClassCastException: файл demo2.zip не может быть приведен к demo2.deserialization вdemo2.deserialization.main (deserialization.java:69)

1 Ответ

0 голосов
/ 11 июля 2019

При работе с сериализацией необходимо учитывать следующее:

  1. Если родительский класс реализовал интерфейс Serializable, тогда дочернему классу не нужно его реализовывать, но, наоборот, это не так.
  2. В процессе сериализации сохраняются только нестатические элементы данных.
  3. Элементы статических данных и переходные данные не сохраняются в процессе сериализации.Итак, если вы не хотите сохранять значение нестатического члена данных, сделайте его временным.
  4. Конструктор объекта никогда не вызывается при десериализации объекта.
  5. Связанные объекты должны реализовывать интерфейс Serializable.

Попробуйте просмотреть свой код и выяснить, является ли проблема одним из вышеупомянутых случаев.

Для получения дополнительной информации см.источник в - Сериализация в Java

...