Genéricos: ou seja, "Tipo parametrizado", o tipo de dados operado é especificado como um parâmetro. Esse mecanismo permite que os programadores detectem tipos ilegais no momento da compilação.
A diferença entre não usar genéricos e usar genéricos
Sem código genérico:
importar java.util.ArrayList; importar java.util.list; public class nogerics {public static void main (string [] args) {list ArrayList = new ArrayList (); ArrayList.add ("1"); // tipo de caractere ArrayList.add (1); // tipo de número para (int i = 0; i <ArrayList.size (); i ++) {string s = (string) ArrayList.get (i); // conversão de elenco, mas não pode ser convertida em tipo de caractere, e nenhum erro foi relatado para o sistema de compilação.out.println (s);}}}Usando código genérico:
importar java.util.ArrayList; importar java.util.list; public class Genics {public static void main (string [] args) {list <string> stringList = new ArrayList <string> (); list <preger> IntegerList = new Arraylist <> (); // simplificar stringList.add ("1"); //StringList.add(1); // Erro de compilação, apenas o tipo de caractere pode ser adicionado integerlist.add (1); //Integerlist.add("1 "); // Erro de compilação, apenas o tipo de número pode ser adicionado para (int i = 0; i <stringList.size (); i ++) {string s = stringList.get.get (i); system.out.println (s);} para (int j = 0; j <integelist.size (); j ++) {int i = integerList.get (j); System.out.println (i);}}}Nota: Na versão JDK, list <string> stringList = new ArrayList <String> (); pode ser abreviado como list <string> stringList = new ArrayList <> ();
Vantagens dos genéricos:
1. Tipo de segurança; Por exemplo, a lista <String> pode apenas inserir tipos de string, basta colocá -lo como tipos de restrição.
2. Elimine o elenco; Torne o código mais legível e reduza a chance de erros.
3. Benefícios potenciais de desempenho; Os genéricos trazem possibilidades para otimizações maiores. Se não houver genéricos, os programadores especificarão esses elencos.
Perceber:
1. Os parâmetros de tipo de tipos genéricos podem ser apenas tipos de classe (incluindo classes personalizadas), não tipos simples. Por exemplo, lista <string, pessoa>
2. Pode haver vários parâmetros de tipo para genéricos, como List <String, Integer>