Ваш слушатель действия пытается прочитать объекты Person из файла "person.txt", используя ObjectInputStream.Кроме того, я бы порекомендовал другое расширение файла.«.txt» подразумевает текстовый файл, но этот файл содержит объекты.Это скорее двоичный файл, а не чистый текст.
Вы не показывали нам содержимое файла или то, как вы вызываете метод write для заполнения файла;но, судя по названию метода, addArrayListToFile
, я предполагаю, что вы передаете ArrayList
методу.Затем вы читаете содержимое файла, добавляете весь ArrayList как один элемент и записываете его обратно.Проблема здесь:
List.add(s);
Аргумент s
является ArrayList, поэтому вы добавляете этот объект как отдельный элемент в List
.Таким образом, ваш файл не содержит объектов Person;фактически он содержит объекты ArrayList.Когда вы выполняете этот оператор:
if ((user.equals((personlist.get(i).getFirstname()))) && (pass.equals(personlist.get(i).getPassword()))) {
, поскольку personlist
является универсальным (параметризованным) типом, компилятор автоматически пытается преобразовать personlist.get(i)
в Person
объект, но на самом деле это ArrayList, вы получаете ClassCastException.
Самый быстрый способ исправить это - изменить вышеупомянутую строку в методе записи на:
List.addAll(s);
Тогда список будет содержать объекты Person вместоArrayList объекты.