涵盖的主要技能和概念
泛型类型的优点
创建类、方法、构造函数和通用接口
有限类型参数
通配符和有限通配符的使用
原始类型
使用菱形运算符进行类型推断 ()
了解擦除技术
泛型的限制和歧义
代码示例
基本泛型类
// classe genérica com tipo parametrizado t class caixa{ private t valor; public void adicionar(t valor) { this.valor = valor; } public t obter() { return valor; } } // uso da classe genérica caixa caixatexto = new caixa<>(); caixatexto.adicionar("olá, genéricos!"); system.out.println(caixatexto.obter());
通用方法
// método genérico que troca dois elementos em um array public staticvoid trocar(t[] array, int i, int j) { t temp = array[i]; array[i] = array[j]; array[j] = temp; } // uso do método genérico integer[] numeros = {1, 2, 3, 4}; trocar(numeros, 1, 3); system.out.println(arrays.tostring(numeros)); // saída: [1, 4, 3, 2]
有限通配符
// soma elementos de uma lista de números (ou subclasses de number)
public static double somalista(list extends number> lista) {
double soma = 0.0;
for (number numero : lista) {
soma += numero.doublevalue();
}
return soma;
}
// uso do curinga limitado
list inteiros = arrays.aslist(1, 2, 3);
system.out.println(somalista(inteiros)); // saída: 6.0
用钻石进行类型推理
// inferência de tipo ao criar um arraylist genérico listlista = new arraylist<>(); lista.add("java"); lista.add("genéricos"); system.out.println(lista);
通用接口
// interface genérica interface pilha{ void push(t item); t pop(); } // implementação da interface genérica class pilhaarray implements pilha { private list itens = new arraylist<>(); public void push(t item) { itens.add(item); } public t pop() { return itens.isempty() ? null : itens.remove(itens.size() - 1); } }
通用构造函数
class Par{ private T primeiro; private U segundo; // Construtor genérico public Par(V valor, T primeiro, U segundo) { System.out.println("Valor adicional: " + valor); this.primeiro = primeiro; this.segundo = segundo; } }
java 中泛型的要点
这些概念使泛型成为在 java 中创建可重用、高效且安全的代码的重要工具。
--