0Pricing
Java Academy · Aula

Métodos e classes genéricos

Defina classes genéricas com parâmetros de tipo e escreva métodos genéricos com <T> antes do tipo de retorno. Aprenda onde a inferência de tipos ajuda.

Métodos e classes genéricos é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 3 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 3 aulas no total.

Visão geral

Classes genéricas reutilizam um único design para muitos tipos, e métodos genéricos funcionam com parâmetros de tipo até mesmo dentro de classes não genéricas. Criaremos um pequeno Pair<T,U>, um método swap e uma fábrica estática.

Por que usar classes genéricas?

Por que tornar a classe genérica?

  • Um design, muitos tipos: reduz a repetição.
  • Segurança de tipos: tipos incorretos são detectados durante a compilação.
  • API limpa: não há conversões explícitas nos valores de retorno.

Código: Pair<T,U>

Pair<T,U> usa a mesma classe com dois tipos diferentes. Não são necessárias conversões explícitas, e a API é clara.

public class Main {
  // Simple generic data holder with two type parameters
  static class Pair<T, U> {
    private final T first;
    private final U second;
    Pair(T first, U second) { this.first = first; this.second = second; }
    T first() { return first; }
    U second() { return second; }
    public String toString() { return "Pair(" + first + ", " + second + ")"; }
  }

  public static void main(String[] args) {
    Pair<String, Integer> p = new Pair<>("age", 21);
    System.out.println(p);
    System.out.println(p.first() + " -> " + p.second());
  }
}

Métodos genéricos: assinatura

Os métodos genéricos funcionam independentemente de a classe ser genérica. Assinatura: <T> returnType... Exemplo: <T> T firstOrDefault(T[] arr, T def).

Código: swap genérico

<T> foi definido no nível do método; assim, ele funciona com matrizes diferentes. Não especificamos o tipo ao fazer a chamada, pois o compilador fez a inferência.

public class Main {
  // Generic utility method: swap two indices of an array of any reference type
  static <T> void swap(T[] arr, int i, int j) {
    T tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;
  }

  public static void main(String[] args) {
    String[] names = { "Ada", "Bob", "Cyd" };
    swap(names, 0, 2); // works with String[]
    for (int k = 0; k < names.length; k = k + 1) {
      System.out.print(names[k] + (k < names.length - 1 ? " " : "\n"));
    }
  }
}

Código: fábrica genérica estática

Fábrica genérica estática: o tipo é inferido na chamada de of(T v). O uso é limpo e legível.

public class Main {
  static class Box<T> {
    private final T value;
    private Box(T v) { this.value = v; }
    public T get() { return value; }
    // Static generic factory method inside a generic class
    public static <T> Box<T> of(T v) { return new Box<T>(v); }
  }

  public static void main(String[] args) {
    // Type inferred by diamond and method generic parameter
    Box<Integer> bi = Box.of(42);
    Box<String> bs = Box.of("hi");
    System.out.println(bi.get() + 1);
    System.out.println(bs.get().toUpperCase());
  }
}

Verificação dos métodos genéricos

Verificação rápida: como declarar corretamente um método genérico?

Recapitulação

Recapitulação: classes genéricas (Pair<T,U>) reduzem a repetição; métodos genéricos (assinatura <T>) funcionam independentemente da classe. A inferência de tipos simplifica as chamadas.

Perguntas Frequentes

A aula “Métodos e classes genéricos” é grátis?

Sim — o texto completo de “Métodos e classes genéricos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 3 aulas no total.

O que vou aprender em “Métodos e classes genéricos”?

Defina classes genéricas com parâmetros de tipo e escreva métodos genéricos com <T> antes do tipo de retorno. Aprenda onde a inferência de tipos ajuda. Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Java Academy?

Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 3.

Quanto tempo leva a aula “Métodos e classes genéricos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Java Academy?

Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Interfaces na prática
  2. Noções básicas de genéricos (T, inferência)
  3. Métodos e classes genéricos
← Voltar para Java Academy