Widziałem dyskusję przy tym pytaniu dotyczącą sposobu tworzenia instancji klasy implementującej z interfejsu. W moim przypadku piszę bardzo mały program w Javie, który korzysta z instancji TreeMap
i, zgodnie z opinią wszystkich, powinien być utworzony w następujący sposób:
Map<X> map = new TreeMap<X>();
W moim programie wywołuję funkcję map.pollFirstEntry()
, która nie jest zadeklarowana w Map
interfejsie (i kilku innych, którzy również są obecni w Map
interfejsie). Udało mi się to zrobić, przesyłając TreeMap<X>
tę metodę wszędzie, gdzie nazywam tę metodę:
someEntry = ((TreeMap<X>) map).pollFirstEntry();
Rozumiem zalety wytycznych inicjalizacji opisanych powyżej dla dużych programów, jednak w przypadku bardzo małego programu, w którym ten obiekt nie zostałby przekazany innym metodom, uważam, że nie jest to konieczne. Mimo to piszę ten przykładowy kod jako część aplikacji o pracę i nie chcę, aby mój kod wyglądał źle lub nie był zaśmiecony. Jakie byłoby najbardziej eleganckie rozwiązanie?
EDYCJA: Chciałbym podkreślić, że bardziej interesują mnie ogólne dobre praktyki kodowania zamiast zastosowania konkretnej funkcji TreeMap
. Jak niektóre z odpowiedzi już wskazały (i zaznaczyłem, że odpowiedziałem jako pierwszy, aby to zrobić), należy zastosować wyższy możliwy poziom abstrakcji, bez utraty funkcjonalności.