¿Cuáles son los generics en Java?

Realmente no entiendo el punto de los generics. ¿Qué hacen, cómo los usan?

Por lo que puedo decir, todo lo que hacen es verificar los tipos de devolución en tiempo de comstackción en lugar de los tiempos de ejecución para evitar ejecutar el progtwig antes de que se produzca un error. ¿Esto es todo lo que hacen?

por ejemplo:

public  int test() { return 'c'; //will throw error at compile instead of runtime } 

Estaba leyendo algo sobre cómo los generics son arbitrarios, y solo debes usar letras mayúsculas. Esto es un poco confuso

Los generics te permiten personalizar un método o clase ” genérico ” con cualquier tipo de trabajo con el que estés trabajando. Por ejemplo, supongamos que tiene un método que agrega dos números. Para trabajar con los tipos en sí, es posible que deba crear varias versiones de este método. Por ejemplo:

 public int Add(int a, int b) public double Add(double a, double b) public float Add(float a, float b) 

Los generics le permiten crear un único método personalizado para el tipo que lo invoca.

 public T Add(T a, T b) 

T se sustituye por el tipo que uses.

Consulte los Fundamentos en las preguntas frecuentes de Angelika Langer : es la mejor explicación de todo lo relacionado con los generics de Java que probablemente encuentre. Dicho esto, el objective principal original de los generics era habilitar colecciones “mecanografiadas”.

La forma más sencilla en que puedo pensar para explicar los generics es la buena metaphore de copiar y pegar:

 public  PASTE addTwoThings(PASTE a, PASTE b) { return a + b; } 

Especifique un tipo (en la parte ) y java use este tipo en todo el bloque de código, y se asegurará de que los tipos sean compatibles. Al hacerlo de esta manera, evitas tener que escribir:

  • addTwoIntegers
  • addTwoStrings
  • addTwoMyObjects

Sin embargo, no confundas esto con un preprocesador, Java espera SOLAMENTE que se proporcione un tipo.