Обобщения Java - Методы
Вы можете написать одно объявление универсального метода, которое может вызываться с аргументами разных типов. В зависимости от типов аргументов, передаваемых универсальному методу, компилятор обрабатывает каждый вызов метода соответствующим образом. Ниже приведены правила для определения общих методов.
Все объявления универсальных методов имеют раздел параметров типа, разделенный угловыми скобками (<и>), который предшествует типу возвращаемого метода (<E> в следующем примере).
Каждый раздел параметров типа содержит один или несколько параметров типа, разделенных запятыми. Параметр типа, также известный как переменная типа, представляет собой идентификатор, определяющий имя универсального типа.
Параметры типа могут использоваться для объявления возвращаемого типа и действовать в качестве заполнителей для типов аргументов, переданных универсальному методу, которые известны как аргументы фактического типа.
Тело универсального метода объявляется так же, как и тело любого другого метода. Обратите внимание, что параметры типа могут представлять только ссылочные типы, но не примитивные типы (например, int, double и char).
пример
В следующем примере показано, как мы можем распечатать массив другого типа с помощью одного универсального метода.
public class GenericMethodTest {
// generic method printArray
public static < E > void printArray( E[] inputArray ) {
// Display array elements
for(E element : inputArray) {
System.out.printf("%s ", element);
}
System.out.println();
}
public static void main(String args[]) {
// Create arrays of Integer, Double and Character
Integer[] intArray = { 1, 2, 3, 4, 5 };
Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };
System.out.println("Array integerArray contains:");
printArray(intArray); // pass an Integer array
System.out.println("\nArray doubleArray contains:");
printArray(doubleArray); // pass a Double array
System.out.println("\nArray characterArray contains:");
printArray(charArray); // pass a Character array
}
}
Это даст следующий результат -
Вывод
Array integerArray contains:
1 2 3 4 5
Array doubleArray contains:
1.1 2.2 3.3 4.4
Array characterArray contains:
H E L L O