He visto la discusión en esta pregunta sobre cómo se instanciaría una clase que se implementa desde una interfaz. En mi caso, estoy escribiendo un programa muy pequeño en Java que usa una instancia de TreeMap
, y de acuerdo con la opinión de todos allí, debería ser instanciado como:
Map<X> map = new TreeMap<X>();
En mi programa, llamo a la función map.pollFirstEntry()
, que no se declara en la Map
interfaz (y a un par de otras personas que también están presentes en la Map
interfaz). Me las arreglé para hacer esto enviando a un sitio TreeMap<X>
donde llamo este método como:
someEntry = ((TreeMap<X>) map).pollFirstEntry();
Entiendo las ventajas de las pautas de inicialización descritas anteriormente para programas grandes, sin embargo, para un programa muy pequeño donde este objeto no se pasaría a otros métodos, creo que es innecesario. Aún así, estoy escribiendo este código de muestra como parte de una solicitud de empleo, y no quiero que mi código se vea mal ni esté desordenado. ¿Cuál sería la solución más elegante?
EDITAR: Me gustaría señalar que estoy más interesado en las buenas prácticas generales de codificación en lugar de la aplicación de la función específica TreeMap
. Como algunas de las respuestas ya han señalado (y he marcado como contestado el primero en hacerlo), se debe usar el nivel de abstracción más alto posible, sin perder la funcionalidad.
fuente