junior
Как не допустить сериализацию?
Чтобы запретить сериализацию объекта, нужно переопределить методы writeObject и readObject, выбрасывающие NotSerializableException.
Пример
private void writeObject(ObjectOutputStream out) throws IOException {
throw new NotSerializableException();
}
private void readObject(ObjectInputStream in) throws IOException {
throw new NotSerializableException();
}
Любая попытка сериализовать или десериализовать такой объект приведёт к исключению.
Другие способы
- Не реализовывать
Serializable— самый простой вариант, но не работает, если суперкласс ужеSerializable - Переопределить
writeObject/readObjectс исключением — работает даже если суперкласс сериализуем - Использовать
enum— enum-объекты сериализуются JVM особым образом (только имя константы), полный контроль невозможен, но и злонамеренная десериализация тоже
На собеседовании: назовите способ с выбрасыванием
NotSerializableExceptionи объясните, зачем это нужно — например, класс содержит чувствительные данные или ресурсы, которые не имеет смысла сериализовать.