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

Параметр типа

Параметр типа <T> - это специальный идентификатор, который позволяет создавать обобщённые (generic) классы, методы и интерфейсы. Вместо конкретного типа, например String или Integer, в объявлении используется условная буква. Чаще всего это буква T (от английского Type), но можно использовать любую другую, например E для элементов коллекции, K и V для ключа и значения в словарях. Конкретный тип подставляется в момент создания объекта или вызова метода. Это позволяет писать один универсальный код для работы с разными типами данных и при этом сохранять строгую проверку типов на этапе компиляции.

Синтаксис

Параметр типа объявляется в угловых скобках после имени класса, интерфейса или метода:

class ClassName<T> { // тело класса }

Для методов параметр типа указывается перед возвращаемым типом:

public <T> T methodName(T value) { return value; }

Пример

Давайте создадим обобщённый класс Box, который хранит значение любого типа, и подставим вместо T тип String:

public class Main { public static void main(String[] args) { Box<String> box = new Box<>(); box.setValue("abcde"); System.out.println(box.getValue()); } } class Box<T> { private T value; public void setValue(T value) { this.value = value; } public T getValue() { return value; } }

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

"abcde"

Пример

Теперь подставим вместо T тип Integer:

public class Main { public static void main(String[] args) { Box<Integer> box = new Box<>(); box.setValue(12345); System.out.println(box.getValue()); } } class Box<T> { private T value; public void setValue(T value) { this.value = value; } public T getValue() { return value; } }

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

12345

Пример

Параметр типа можно использовать и в обобщённых методах. Давайте напишем метод, который возвращает первый элемент списка:

import java.util.List; public class Main { public static void main(String[] args) { List<String> list = List.of("a", "b", "c", "d", "e"); System.out.println(getFirst(list)); } public static <T> T getFirst(List<T> list) { return list.get(0); } }

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

"a"

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

  • обобщённые методы generic-method,
    которые используют параметры типа
  • обобщённые конструкторы generic-ctor,
    которые принимают параметры типа
  • алмазный оператор diamond,
    который позволяет не указывать тип справа
  • ограничение типа extends-bound,
    которое сужает допустимые типы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить