РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
81 of 1163 menu

Несколько параметров

Конструкция <K, V> позволяет объявить обобщенный класс, интерфейс или метод сразу с несколькими типами-параметрами. Первым параметром обычно указывают тип ключа K (от англ. key), вторым - тип значения V (от англ. value). При создании объекта вместо K и V подставляются конкретные типы, например String и Integer. Количество параметров может быть любым, но на практике чаще всего используют два или три.

Синтаксис

class ClassName<K, V> { // ... }

Пример

Давайте создадим обобщенный класс Pair с двумя типами-параметрами K и V и сохраним в него пару значений:

public class Main { public static void main(String[] args) { Pair<String, Integer> pair = new Pair<>("abcde", 12345); System.out.println(pair.getKey()); System.out.println(pair.getValue()); } } class Pair<K, V> { private K key; private V value; public Pair(K key, V value) { this.key = key; this.value = value; } public K getKey() { return key; } public V getValue() { return value; } }

Результат выполнения кода:

"abcde" 12345

Пример

Давайте создадим обобщенный метод с двумя типами-параметрами K и V, который принимает два аргумента и выводит их на экран:

public class Main { public static void main(String[] args) { print("abcde", 12345); print(1, "12345"); } public static <K, V> void print(K key, V value) { System.out.println(key + " -> " + value); } }

Результат выполнения кода:

"abcde -> 12345" "1 -> 12345"

Пример

Давайте создадим класс MapEntry с тремя типами-параметрами K, V и N и сохраним в него ключ, значение и номер записи:

public class Main { public static void main(String[] args) { MapEntry<String, Integer, Integer> entry = new MapEntry<>("abcde", 12345, 1); System.out.println(entry.getKey()); System.out.println(entry.getValue()); System.out.println(entry.getNumber()); } } class MapEntry<K, V, N> { private K key; private V value; private N number; public MapEntry(K key, V value, N number) { this.key = key; this.value = value; this.number = number; } public K getKey() { return key; } public V getValue() { return value; } public N getNumber() { return number; } }

Результат выполнения кода:

"abcde" 12345 1

Смотрите также

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить