Ho visto la discussione su questo domanda su come una classe che implementa da un'interfaccia sarebbe istanziata. Nel mio caso sto scrivendo un programma molto piccolo in Java che utilizza un'istanza di TreeMap
e, secondo l'opinione di tutti, dovrebbe essere istanziato come:
Map<X> map = new TreeMap<X>();
Nel mio programma, chiamo la funzione map.pollFirstEntry()
, che non è dichiarata nell'interfaccia Map
(e un altro paio che sono presenti anche nell'interfaccia Map
). Sono riuscito a farlo gettando a TreeMap<X>
ovunque io chiamo questo metodo come:
someEntry = ((TreeMap<X>) map).pollFirstEntry();
Comprendo i vantaggi delle linee guida di inizializzazione descritte sopra per i programmi di grandi dimensioni, tuttavia per un programma molto piccolo in cui questo oggetto non sarebbe passato ad altri metodi, penserei che non sia necessario. Tuttavia, sto scrivendo questo codice di esempio come parte di un'applicazione di lavoro, e non voglio che il mio codice appaia male né ingombra. Quale sarebbe la soluzione più elegante?
EDIT: vorrei sottolineare che sono più interessato alle buone pratiche di codifica piuttosto che all'applicazione della funzione specifica TreeMap
. Come alcune delle risposte hanno già indicato (e ho contrassegnato come risposta il primo a farlo), dovrebbe essere usato il livello di astrazione più alto possibile, senza perdere funzionalità.