Junior
Que funcionalidades oferecem os Genéricos?
sobes.tech IA
Resposta da IA
Os genéricos (obter) oferecem as seguintes possibilidades:
- Aumento da segurança de tipos (Type Safety): Permitem detectar erros de tipos na fase de compilação, não em tempo de execução.
- Eliminação de conversões de tipos (Type Casting): Evitam a necessidade de conversões explícitas ao trabalhar com coleções e outras estruturas de dados.
- Aumento da reutilização de código: Permitem criar classes, interfaces e métodos genéricos que funcionam com diferentes tipos de dados sem duplicar lógica.
- Melhoria do desempenho: Embora em Java os genéricos sejam implementados através de eliminação de tipos (Type Erasure), o que nem sempre melhora diretamente o desempenho em comparação com o uso de
Objecte conversões, em algumas linguagens (como C#) podem oferecer melhor desempenho ao evitar boxing/unboxing ao trabalhar com tipos primitivos. - Código mais legível e fácil de manter: Indicam claramente os tipos de dados com os quais o código trabalha, tornando-o mais compreensível.
Exemplo de uso em Java:
// Sem genéricos
/*
List list = new ArrayList();
list.add("string");
Integer i = (Integer) list.get(0); // Erro em tempo de execução (ClassCastException)
*/
// Com genéricos
List<String> stringList = new ArrayList<>();
stringList.add("string");
// Integer i = stringList.get(0); // Erro de compilação
Exemplo em C#:
// Sem genéricos
/*
ArrayList list = new ArrayList();
list.Add("string");
int i = (int)list[0]; // Erro em tempo de execução (InvalidCastException)
*/
// Com genéricos
List<string> stringList = new List<string>();
stringList.Add("string");
// int i = stringList[0]; // Erro de compilação