Sobes.tech
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 Object e 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