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
- Interfaces na prática
- Noções básicas de genéricos (T, inferência)
- Métodos e classes genéricos