Tipo de devolución de los métodos generics de Java

Me pregunto por qué los métodos generics que devuelven nada void son (o pueden) declarados de esta manera:

  public static  void printArray( E[] inputArray ) { // Display array elements for ( E element : inputArray ){ System.out.printf( "%s ", element ); } System.out.println(); } 

Parece que es el tipo del objeto devuelto, pero el método no devuelve nada de hecho. Entonces, ¿cuál es el significado real de en este caso específicamente y en general en los métodos generics?

Esta pregunta se ajusta a una de mis notas antiguas. Espero que esta ilustración ayude:

enter image description hereenter image description here

La es la statement de parámetro de tipo genérico. Significa que “este método tiene un parámetro de tipo único, llamado E , que puede ser de cualquier tipo”.

No es el tipo de devolución, que viene después de la statement del parámetro de tipo, justo antes del nombre del método. Entonces, el tipo de printArray método printArray en su pregunta todavía no tiene void .

Consulte la sección 8.4 de JLS para obtener más detalles sobre las declaraciones de métodos.

No es el tipo del objeto devuelto. Indica que E , en la firma del método, es un tipo genérico y no un tipo concreto. Sin él, el comstackdor buscaría una clase llamada E para el argumento del método.

El se llama un parámetro de tipo formal. No es el tipo de devolución del método. Básicamente dice que el método puede aceptar como parámetros matrices de diferentes tipos (E [] inputArray).

E se usa como marcador de posición para el tipo real que se pasará a la función Gen cuando llame a esta función.

supongamos que E puede ser reemplazado por entero