Sobes.tech
Middle

O que são Genéricos e como são utilizados na programação?

sobes.tech IA

Resposta da IA

Genéricos (generics) são a capacidade de escrever código que pode trabalhar com diferentes tipos de dados, mantendo a segurança de tipos durante a compilação. Permitem criar classes, interfaces e métodos nos quais o tipo de dado é determinado na sua utilização, e não na sua declaração.

O uso de Generics garante:

  • Segurança de tipos: O compilador verifica a compatibilidade de tipos, ajudando a evitar erros relacionados com incompatibilidades em tempo de execução.
  • Reutilização de código: O mesmo código pode ser utilizado para trabalhar com diferentes tipos de dados sem duplicar lógica.
  • Legibilidade do código: O uso de tipos específicos em vez de Object universal aumenta a clareza do código.
  • Performance: Em algumas linguagens (por exemplo, Java), os Generics são implementados com eliminação de tipos (type erasure), mas em outras (como C#, C++), a informação do tipo é mantida em tempo de execução.

Exemplos de uso:

  • Coleções: Criação de listas, conjuntos e mapas genéricos que podem armazenar elementos de qualquer tipo.
    // Criação de uma lista de strings
    List<String> stringList = new ArrayList<>();
    stringList.add("olá");
    // Erro de compilação se tentar adicionar um número
    // stringList.add(123);
    
  • Fábricas: Criação de fábricas que podem gerar objetos de diferentes tipos.
  • Métodos: Escrever métodos que trabalham com tipos de dados genéricos.
    // Método genérico para troca de valores
    public static void Swap<T>(ref T a, ref T b)
    {
        T temp = a;
        a = b;
        b = temp;
    }
    
  • Classes: Criação de classes que são genéricas em relação ao tipo de dados armazenados ou processados.
    // Classe genérica Box
    class Box<T> {
        private T content;
    
        public void setContent(T content) {
            this.content = content;
        }
    
        public T getContent() {
            return content;
        }
    }
    

Comparação com o uso do tipo Object (em Java):

Funcionalidade Generics Tipo Object
Segurança de tipos Em tempo de compilação Em tempo de execução (através de casting)
Necessidade de casting Não Sim
Erros Detectados na fase de compilação Podem ocorrer em tempo de execução (ClassCastException)
Legibilidade Alta Menor (não é claro que tipos se esperam)

No geral, os Generics são uma ferramenta poderosa que permite escrever código mais confiável, legível e reutilizável.