0Pricing
Java Academy · Aula

Noções básicas de genéricos (T, inferência)

Aprenda os parâmetros de tipo genérico T , por que eles proporcionam segurança em tempo de compilação e como o operador diamante infere tipos.

Noções básicas de genéricos (T, inferência) é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 2 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.

Por que usar genéricos?

Genéricos adicionam tipos a contêineres e utilitários para que o compilador possa protegê-lo. Benefícios:

  • Segurança de tipos — não há mistura acidental de tipos.
  • Sem conversões explícitas — código mais limpo.
  • Reutilizável — uma classe funciona com muitos tipos.

O que é T?

T (parâmetro de tipo) é um marcador para um tipo real. Quando você escreve Box<String>, o compilador trata T como String nessa utilização.

Código: Box<T>

Box<T>: quando fornecemos String para T, somente String é aceito. Um tipo incorreto gera um erro em tempo de compilação; não há surpresas em tempo de execução.

public class Main {
  // A tiny generic container
  static class Box<T> {
    private T value;
    void set(T v) { value = v; }
    T get() { return value; }
  }

  public static void main(String[] args) {
    Box<String> bs = new Box<String>(); // T becomes String
    bs.set("hello");
    System.out.println(bs.get());       // no cast needed

    // Box<Integer> bi = new Box<Integer>();
    // bi.set("oops"); // would not compile: String is not Integer
  }
}

Código: inferência com diamante

Com <> (diamante), o compilador infere o tipo do lado direito. Se ele for incompatível com o tipo do lado esquerdo, o código não será compilado, o que proporciona segurança.

public class Main {
  static class Box<T> {
    private T value;
    Box() {}
    Box(T v) { value = v; }
    T get() { return value; }
  }

  public static void main(String[] args) {
    // Type on the left, diamond on the right — compiler infers T
    Box<Integer> a = new Box<>(123);
    Box<String> b = new Box<>("hi");

    System.out.println(a.get() + 1);    // 124
    System.out.println(b.get().toUpperCase());
  }
}

Parâmetros de tipo limitados

Limites: alguns métodos genéricos exigem uma capacidade como Comparable. Por exemplo: <T extends Comparable<T>> significa que T deve ser comparável.

Código: método genérico limitado

Método genérico: <T extends Comparable<T>>. Integer e String são compatíveis porque ambos implementam Comparable.

public class Main {
  // Generic method: works for any Comparable type
  static <T extends Comparable<T>> T min(T a, T b) {
    return (a.compareTo(b) <= 0) ? a : b;
  }

  public static void main(String[] args) {
    System.out.println(min(3, 7));              // Integer
    System.out.println(min("apple", "banana")); // String (lexicographic)
  }
}

Verificação dos fundamentos dos genéricos

Verificação rápida: qual é o principal benefício de usar genéricos como Box<String>?

Recapitulação

Recapitulação: T é um marcador; o tipo é inferido com o diamante. Com limitações (extends Comparable), tornamos os métodos genéricos seguros e poderosos.

Perguntas Frequentes

A aula “Noções básicas de genéricos (T, inferência)” é grátis?

Sim — o texto completo de “Noções básicas de genéricos (T, inferência)” é 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 “Noções básicas de genéricos (T, inferência)”?

Aprenda os parâmetros de tipo genérico T , por que eles proporcionam segurança em tempo de compilação e como o operador diamante infere tipos. 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 2 de 3.

Quanto tempo leva a aula “Noções básicas de genéricos (T, inferência)”?

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