Есть иерархия классов указанная ниже, для сериализации хватит ли имплиментировать Serializable только классу A, для сериализации классов типа C?
class A {
}
class B extends A{
}
class C extends B{
}
Простой ответ: да, интерфейсы в Java наследуются.
Об этом, в частности, явно написано в документации Serializable
:
All subtypes of a serializable class are themselves serializable.
Все наследники сериализуемого класса сериализуемы.
При этом надо иметь ввиду, что Serializable
— интерфейс, который используется только чтобы отмечать классы, поддерживающие сериализацию. Класс, который отмечен как Serializable
может содержать поля, сериализация которых невозможна.
class A implements Serializable {
}
//Класс В унаследовал интерфейс
class B extends A {
//но содержит поля, которые не сериализуются
Scanner scanner;
}
Дополнение по несериализуемым полям: При обнаружении несериализуемых полей при сериализации будет выброшено NotSerializableException. Это можно обойти несколькими способами, описанными в документации к Serializable
, например в примере выше:
scanner
как transient
;но в этом случае сохранение и восстановление состояния несериализуемого поля нужно будет реализовывать самостоятельно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть 2 сущьности User и RoleМне нужно сделать выборку User что бы Role которая у User на полях тоже инициализировалась
Как замаппить конструкцию вида List<Map<String, String>> list, используя XML mapping Hibernate?
Сразу скажу - в java начинающий, как сделать цикл более "грамотным" и "логичным"?
Как получить(либо вывести в консоль) более глубокое значение ArrayList, например значение testVal из ArrayList-a parserJson, если он всегда имеет динамическую...