Подтвердить что ты не робот

Какова цель интерфейса маркера?

Возможные дубликаты:
интерфейс маркера
Какова цель интерфейса маркера?

Я знаю, что такое интерфейс-интерфейс - интерфейс без методов. Пример: Serializable, Remote, Cloneable.

Мне интересно, какова цель маркерного интерфейса. Это мое понимание: -

В основном это просто идентификация специальных объектов из обычных объектов. Как и в случае сериализации, объекты, которые должны быть сериализованы, должны реализовывать сериализуемый интерфейс, а метод writeObject() должен быть проверен где-то, если это экземпляр сериализации или нет. Насколько мне известно, это единственная цель, для которой writeObject использует интерфейс serializable (интерфейс маркера). Правильно? или jvm также предоставляет некоторую дополнительную функциональность на основе сериализуемого интерфейса?

Аналогичная логика верна для клонируемого интерфейса.

Теперь посмотрим, как это полезно.

Давайте скажем, что в приложении у нас 1000 объектов value. Мы хотим сериализовать только 100 конкретных объектов. Теперь JDK сказал, что роль программиста - это просто отметить объект как особый с интерфейсом маркера в этом случае его сериализуемым интерфейсом. Теперь JDK позаботится о том, какой объект сериализуется или нет?

Да, мы могли бы достичь такого поведения с каким-то флагом bollean. но затем будет плохой подход.

Сходно говоря, в случае пользовательского интерфейса маркера мы можем различать специальные объекты с помощью интерфейса маркера. Как мы можем использовать экземпляр оператора, чтобы определить, является ли он экземпляром этого конкретного интерфейса. Если да, то в случае отсутствия какого-либо исключения исключение.

Пожалуйста, позвольте, если правильное понимание правильное?

4b9b3361

Ответ 1

Ваше понимание верное. Интерфейс маркера также определяет тип. Таким образом, его можно использовать в сигнатурах методов. Например, метод Hibernate Session.get() принимает аргумент Serializable as. Он избегает передачи первичного ключа, который не будет сериализован как аргумент.

Обратите внимание, что Cloneable ретроспективно рассматривается как плохой выбор дизайна.

Serializable, безусловно, может быть реализован с аннотацией, если они существовали при реализации сериализации.

Маркерные интерфейсы в большинстве случаев являются анти-шаблонами. Интерфейс должен определять полиморфное поведение. Интерфейс маркера можно заменить аннотацией.