17 июл. 2015 г.

Интерфейсы. Часть 6 – интерфейсы-маркеры.

Иногда полезно определить пустой интерфейс. Класс может реализовать этот интерфейс, указав его в секции implements. При этом нет необходимости реализовывать методы. Любой экземпляр класса становится экземпляром интерфейса. С помощью оператора instanceof Javaкод может проверить, является ли объект экземпляром интерфейса. Таким образом, эта техника полезна для предоставления дополнительной информации об объекте. Интерфейс Cloneable из пакета java.lang является примером интерфейса-маркера (marker interface). Он не определяет методов, но идентифицирует класс, внутреннее состояние которого можно клонировать методом clone() класса Object.

Пусть дан произвольный объект. Наличие у него работающего метода clone() можно определить с помощью следующего кода:

int[] aint = new int[10];
int[] bint;
if (aint instanceof Cloneable) bint = aint.clone();
else bint = null;

Еще одним примером интерфейса-маркера является интерфейс java.io.Serializable.

Комментариев нет:

Отправить комментарий