У меня есть 2 класса:
public class BaseEntity<ID> implements Serializable {
private ID id;
BaseEntity(ID id){
this.id = id;
}
public ID getId() {
return id;
}
public void setId(ID id) {
this.id = id;
}
и
public class Client extends BaseEntity<Integer>{
private String name;
private static int lastAssignedId = 0;
private static int getNewId(){
lastAssignedId++;
return lastAssignedId;
}
public Client(String name){
super(getNewId());
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
, и я пытаюсь записать объект типа Client в файл из класса репозитория:
public class FileRepository<ID, T extends BaseEntity<ID>> extends InMemoryRepository<ID, T>
примерно так
private void saveToFile(T entity) throws IOException {
OutputStream outputStream = Files.newOutputStream(Paths.get(this.file), StandardOpenOption.CREATE, StandardOpenOption.APPEND);
ObjectOutputStream o = new ObjectOutputStream(outputStream);
o.writeObject(entity);
o.close();
outputStream.close();
}
, где file
- это атрибут, данный конструктору. Я получаю следующую ошибку:
Caused by: java.io.NotSerializableException: Model.Client
at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185)
at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)
at Repository.FileRepository.saveToFile(FileRepository.java:60)
at Repository.FileRepository.save(FileRepository.java:53)
at Service.Service.addClient(Service.java:32)
at View.View.addClient(View.java:199)
at View.View.handleAdd(View.java:103)
at View.View.run(View.java:30)
at main.main(main.java:12)
Caused by: java.io.NotSerializableException: Model.Client
, вызванную o.writeObject(entity);
. Я провел некоторый поиск в Интернете, и того факта, что родительский класс реализует сериализуемый, должно быть достаточно (я также попытался добавить это к дочернему элементу, но он также не работал). Я действительно не понимаю, что я делаю неправильно или отсутствует.