Gymterview
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 и объясните, зачем это нужно — например, класс содержит чувствительные данные или ресурсы, которые не имеет смысла сериализовать.