Generics: es decir, "tipo parametrizado", el tipo de datos operado se especifica como un parámetro. Este mecanismo permite a los programadores detectar tipos ilegales en el momento de la compilación.
La diferencia entre no usar genéricos y usar genéricos
Sin código genérico:
import java.util.arrayList; import java.util.list; public class Nogenerics {public static void main (string [] args) {list arrayList = new ArrayList (); ArrayList.Add ("1"); // Tipo de personaje ArrayList.Add (1); // Tipo de número para (int i = 0; i <ArrayList.Size (); i ++) {String S = (String) ArrayList.get (i); // Conversión de fundición, pero no se puede convertir al tipo de caracteres, y no se informó ningún error para compilación System.out.println (s);}}}Usando el código genérico:
import java.util.arrayList; import java.util.list; public class Generics {public static void main (string [] args) {list <string> stringList = new ArrayList <String> (); List <Diseger> InteGerList = New ArrayList <> (); // simplificar StringList.Add ("1"); //Stringlist.add(1); // Error de compilación, solo el tipo de caracteres se puede agregar IntegerList.Add (1); //Integerlist.add("1 "); Error de compilación de compilación, solo se puede agregar un tipo de número de número para (int i = 0; i <stringList.Size (); i ++) {String S = StringList.get (i); System.out.println (s);} para (int j = 0; j <entergerList.size (); j ++) {int int i = integerList.get (j); system.out.println (i);}}}Nota: En la versión JDK, List <String> StringList = New ArrayList <String> (); se puede abreviar como list <String> StringList = new ArrayList <> ();
Ventajas de genéricos:
1. Tipo de seguridad; Por ejemplo, List <String> solo puede insertar tipos de cadenas, simplemente colocarlo como tipos de restricción.
2. Eliminar el casting; Haga que el código sea más legible y reduzca las posibilidades de errores.
3. Beneficios potenciales de rendimiento; Los genéricos aportan posibilidades para mayores optimizaciones. Si no hay genéricos, los programadores especificarán estos castores.
Aviso:
1. Los parámetros de tipo de tipos genéricos solo pueden ser tipos de clases (incluidas las clases personalizadas), no los tipos simples. Por ejemplo, lista <cadena, persona>
2. Puede haber parámetros de tipo múltiple para genéricos, como List <String, Integer>