Возвращаемый тип общих методов Java

Интересно, почему общие методы, которые возвращают ничего void, объявляются (или могут быть) следующим образом:

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

Кажется, что <E> - тип возвращаемого объекта, но метод фактически ничего не возвращает. Итак, каков реальный смысл <E> в этом случае конкретно и в общих методах вообще?

Ответы

Ответ 1

Этот вопрос подходит для одной из моих старых заметок. Надеюсь, эта иллюстрация поможет:

enter image description hereenter image description here

Ответ 2

<E> - это объявление типа типового типа. Это означает, что "этот метод имеет параметр одного типа, называемый E, который может быть любым типом".

Это не тип возвращаемого значения, который появляется после объявления параметра типа, непосредственно перед именем метода. Таким образом, возвращаемый тип метода printArray в вашем вопросе остается void.

Подробнее о описаниях методов см. раздел 8.4 JLS.

Ответ 3

Это не тип возвращаемого объекта. Он указывает, что E в сигнатуре метода является общим типом, а не конкретным типом. Без него компилятор будет искать класс с именем E для аргумента метода.

Ответ 4

E > называется формальным параметром типа. Это не тип возвращаемого метода. В основном он говорит, что метод может принимать в качестве параметров массивы разных типов (E [] inputArray).

Ответ 5

E используется в качестве заполнителя для фактического типа, который будет передан функции Gen при вызове этой функции.

предположим, что E можно заменить на integer