Какое исключение лучше всего подходит для сценария «Вы не должны использовать этот метод в этом контексте»?

1

В интерфейсе у меня есть метод, который можно использовать в одной реализации, но не должен использоваться в другом. Я думаю об исключении, если кто-то должен использовать этот метод в этой конкретной реализации. (что не означает, что легко случайно встретить это исключение)

Чтобы быть более конкретным, метод getPlayer(String), который получает Player по имени. Player является клиентом, подключенным к серверу, однако во второй реализации мы не смогли бы получить подключенных клиентов, поскольку вторая реализация представляет другие (кэшированные и технически автономные) серверы, которые где-то хранятся в списке.

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

  • 1
    Похоже, работа для композиции, а не наследство?
  • 0
    Да, звучит так, будто композиция подойдет лучше. Весьма вероятно, что в вашей модели что-то не так, если вы хотите, чтобы данный метод использовался только в нескольких реализациях интерфейса.
Показать ещё 1 комментарий
Теги:
exception
design

2 ответа

2
Лучший ответ

Я бы выбрал исключение IllegalStateException

Сигналы о том, что метод был вызван в незаконное или ненадлежащее время. Другими словами, среда Java или приложение Java не находятся в соответствующем состоянии для запрошенной операции.

или если ваша реализация просто не поддерживает его, вы можете пойти также с UnsupportedOperationException

Брошено, чтобы указать, что запрошенная операция не поддерживается.

0

Обязательно реализовать все методы интерфейса. Принятый ответ на этот вопрос может помочь.

  • 0
    Я не согласен; Все методы интерфейса реализованы, но некоторые из них просто не будут работать в контексте 2-й реализации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню