Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida a respeito de interfaces.

Alguém pode me explicar por que geralmente se usa algo como: List<Integer> lista = new ArrayList<>(); , mas no Exercício 18, aula 5, Java III foi utilizada uma referência direta pra TreeSet (TreeSet<Integer> numeros = new TreeSet<>();)? Ainda tenho dúvidas sobre quando devo referenciar a interface e quando devo referenciar diretamente a classe que contém os métodos que eu quero usar.

2 respostas
solução!

Oi Icaro

Essa é uma dúvida que vai levar um tempo para ser sanada. É natural, e bom, você estar sempre se questionando como se referenciar o objeto. E apenas com a prática vai ficar mais claro.

Bem, indo direto a questão: a regra geral é sempre tentar ser o mais "genérico" possível. Se você pode se referir como Set, não precisa falar TreeSet, se você pode se referir como Collection, melhor ainda! Por quê? Pois o dia que precisar mudar a implementação, menos chances de ter de mudar outros pontos do código.

No caso do exercício, e em diversos casos reais de código, usamos o TreeSet para se referir apenas para ficar claro. Isso também não é considerado má prática se a variável for uma variável local (isso é, não um atributo da classe), já que ela nasce e morre dentro de um escopo curto e pequeno, qualquer mudança seria apenas local.

Entendi. Obrigado pela dica.