Sobes.tech
Middle

O que são tipos genéricos?

sobes.tech IA

Resposta da IA

Os tipos genéricos são um meio de parametrização de tipos que permite criar classes, interfaces e métodos universais. Eles permitem trabalhar com diferentes tipos de dados sem perder a segurança de tipos durante a compilação.

As principais vantagens do uso de Generics:

  • Segurança de tipos: O compilador verifica a compatibilidade de tipos na fase de compilação, ajudando a identificar erros potenciais antes de executar o programa.
  • Redução de duplicação de código: Pode-se criar uma única classe ou método que funciona com diferentes tipos, em vez de escrever código separado para cada tipo.
  • Maior legibilidade do código: O uso de tipos genéricos torna o código mais compreensível, indicando com quais tipos de dados ele trabalha.
  • Eliminação da necessidade de casting explícito: Ao trabalhar com coleções genéricas, não há necessidade de converter explicitamente os elementos para o tipo desejado ao extrair.

Exemplo de uso em Java:

// Criação de uma lista que só pode armazenar strings
List<String> stringList = new ArrayList<>();
stringList.add("olá");
// stringList.add(123); // Erro de compilação, pois 123 não é uma string

// Obtenção de um elemento sem necessidade de conversão de tipos
String primeiroElemento = stringList.get(0);

Exemplo de uso em C#:

// Criação de uma lista que só pode armazenar números inteiros
List<int> intList = new List<int>();
intList.Add(10);
// intList.Add("mundo"); // Erro de compilação, pois "mundo" não é um inteiro

// Obtenção de um elemento sem necessidade de conversão de tipos
int numero = intList[0];

Exemplo de uma classe genérica:

// Classe genérica Box, que pode armazenar um objeto de qualquer tipo T
public class Box<T> {
    private T item;

    public void setItem(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }
}

// Uso da classe genérica
Box<Integer> intBox = new Box<>();
intBox.setItem(123);
int intValue = intBox.getItem(); // Sem necessidade de conversão

Box<String> stringBox = new Box<>();
stringBox.setItem("teste");
String stringValue = stringBox.getItem(); // Sem necessidade de conversão

Assim, os tipos genéricos são uma ferramenta poderosa para criar código flexível, seguro e fácil de manter.