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