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<>();
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