Eu já vi a discussão nesta pergunta sobre como uma classe que implementa a partir de uma interface seria instanciada. No meu caso, estou escrevendo um programa muito pequeno em Java que usa uma instância de TreeMap
e, de acordo com a opinião de todos, deve ser instanciado como:
Map<X> map = new TreeMap<X>();
No meu programa, estou chamando a função map.pollFirstEntry()
, que não está declarada na Map
interface (e algumas outras que também estão presentes na Map
interface). Eu consegui fazer isso transmitindo para TreeMap<X>
todos os lugares que eu chamo de método como:
someEntry = ((TreeMap<X>) map).pollFirstEntry();
Entendo as vantagens das diretrizes de inicialização descritas acima para programas grandes, no entanto, para um programa muito pequeno em que esse objeto não seria passado para outros métodos, consideraria desnecessário. Ainda assim, estou escrevendo esse código de exemplo como parte de um pedido de emprego e não quero que meu código fique mal ou desorganizado. Qual seria a solução mais elegante?
EDIT: Gostaria de salientar que estou mais interessado nas boas práticas gerais de codificação, em vez da aplicação da função específica TreeMap
. Como algumas das respostas já apontaram (e marquei como respondida a primeira), o nível de abstração mais alto possível deve ser usado, sem perder a funcionalidade.