Seria possível exemplificar um(ou mais ) problema(s) que poderia(m) acontecer caso eu não usasse List como referência para aulas?
Por exemplo:
usar isso:
ArrayList<> aluas = new ArrayList<>();
no lugar disso:
List<> aluas = new ArrayList<>();
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Seria possível exemplificar um(ou mais ) problema(s) que poderia(m) acontecer caso eu não usasse List como referência para aulas?
Por exemplo:
usar isso:
ArrayList<> aluas = new ArrayList<>();
no lugar disso:
List<> aluas = new ArrayList<>();
Se você usar o
List<> aluas = new ArrayList<>();
Isso seria sua pergunta? O erro não estou lembrado agora mas é só fazer o teste, Se você passar nada no paramentro do List, não ira saber que doque é essa lista. Agora se você referenciar
List<Aula> aluas = new ArrayList<Aula>();
Aqui você ta passando um objeto para a lista, então não ira ocorrer problemas.
Na verdade minha pergunta é o que problemas poderiam acontecer no futuro caso usasse
ArrayList<> aluas = new ArrayList<>();
ao inves de usar apenas a interface List para referencia. O autor fala de problemas que poderiam acontecer, mas não exemplifica, fiquei curioso.
Quando a sua variável de instância é uma interface, você esta deixando sua aplicação mais flexível. Costuma-se dizer que você esta programando para interface.
Por exemplo, olha a quantidade de objetos que a interface List aceita:
List<String> list = new ArrayList<>();
List<String> list1 = new LinkedList<>();
List<String> list2 = new Vector<>();
Dessa forma eu posso escolher qual é a implementação mais performática ou que se adequa melhor ao sistema.
Espero ter ajudado !
Atenciosamente, João.
Obrigado pela resposta João. Eu entendo que ao usar a interface na referência eu ganho flexibilidade. Porém, eu gostaria de saber que outros problemas(que o autor menciona no curso mas não exemplicifa) não usar a interface como referência poderia causar em projetos grandes.
Se você não programar para interface, seus métodos terão parâmetros de classe concreta e a cada novo tipo que é criado em seu sistema você tem que criar um novo método ou funcionalidade. Isso causa problema ao realizar a manutenção do código. Acho que foi nesse sentido que o autor quis expor.
Pense na API de collections do Java , suas interfaces não são alteradas por muito tempo, imagina se a cada nova estrutura de dados que fosse criada essa classe fosse alterada. Muito código seria quebrado e levaria ao caos.
Att, João