Ola, gostaria de saber o motivo de declararmos SET e instanciarmos HASHSET?
Set conjunto = new HashSet();
Seria mais por convenção? Pois Set ja implementa HashSet?
Porque declaramos SET e instanciamos HASHSET?
4 Respostas
Não é uma boa prática ficar dependente da implementação de uma interface. Ao usar a interface (Set), vc pode mudar para outra implementação sem causar grandes problemas no seu código.
Set é uma interface e interfaces são tipos abstratos de dados, logo, não podem ser instanciadas, semelhante ao que acontece com as classes abstratas.
HashSet é uma das classes concretas que implementam a interface Set.
É uma boa prática os atributos, parâmetros ou retorno de métodos declararem a interface ao invés da classe que as implementa, isso facilita manutenção futura, pois você pode substituir a classe que implementa a interface, sem afetar o comportamento do resto do sistema.
Ah… entendi… Assim eu poderia usar TreeSet, HashSet e LinkedHashSet sem afetar diretamente o resto.
Obrigado meu caro. Agora ficou claro pra mim.
Exatamente, ou até usar sua própria implementação de List.
Essa é a magia do polimorfismo.