Как предотвратить расширение интерфейса - PullRequest
6 голосов
/ 21 августа 2010

В Java, есть ли способ предотвратить расширение интерфейса.

Поскольку final нельзя добавить к interface, мне было любопытно узнать, был ли способ предотвратить расширение интерфейса, если таковой имеется.

Ответы [ 3 ]

3 голосов
/ 21 августа 2010

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

Что вы можете сделать, это поместить интерфейс в пакет и предоставить ему видимость по умолчанию.При этом только классы внутри этого пакета могут реализовывать этот интерфейс.

Но с этим решением вы также теряете возможность использовать интерфейс вне этого пакета, так что это не реальное решение.

2 голосов
/ 21 августа 2010

Нет способа предотвратить расширение интерфейса.

Вы можете обнаружить, если кто-то расширил ваш интерфейс во время выполнения, используя отражение.

0 голосов
/ 22 августа 2010

Это очень похоже на ранее заданный вопрос - окончательный интерфейс в Java .

Я дал два ответа.

  1. Да, через инженерия байт-кода .Полученный интерфейс не может быть расширен, но не имеет практического значения
  2. Да, аннотации - это интерфейсы, которые не могут быть расширены другими интерфейсами.

Кроме того, выможет поместить интерфейс в класс, присвоить ему модификатор private access и убедиться, что интерфейс этого файла класса не расширяет его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...