Я видел обсуждение этого вопроса относительно того, как будет реализован класс, реализующий интерфейс. В моем случае я пишу очень маленькую программу на Java, которая использует экземпляр TreeMap
, и, по мнению каждого, она должна создаваться следующим образом:
Map<X> map = new TreeMap<X>();
В моей программе я вызываю функцию map.pollFirstEntry()
, которая не объявлена в Map
интерфейсе (и пару других, которые также присутствуют в Map
интерфейсе). Мне удалось сделать это, приведя к TreeMap<X>
везде, где я называю этот метод, как:
someEntry = ((TreeMap<X>) map).pollFirstEntry();
Я понимаю преимущества рекомендаций по инициализации, описанных выше для больших программ, однако для очень маленькой программы, где этот объект не будет передан другим методам, я думаю, что это не нужно. Тем не менее, я пишу этот пример кода как часть рабочего приложения, и я не хочу, чтобы мой код выглядел плохо и не загромождался. Какое будет самое элегантное решение?
РЕДАКТИРОВАТЬ: Я хотел бы отметить, что меня больше интересуют широкие хорошие практики кодирования, а не применение конкретной функции TreeMap
. Как уже указывалось в некоторых ответах (и я отметил, что ответили первыми, кто это сделал), следует использовать более высокий возможный уровень абстракции, не теряя при этом функциональности.