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

Generic-метод

Generic-метод - это метод, который объявляет собственный параметр типа и может работать с разными типами данных без потери типобезопасности. Параметр типа указывается в угловых скобках перед возвращаемым типом метода. В первый параметр обычно передаётся значение обобщённого типа, во второй - другое значение того же типа, а результатом может быть значение, коллекция или другой объект, зависящий от типа T. В отличие от generic-класса, параметр типа объявляется непосредственно у метода и действует только внутри него.

Синтаксис

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

Пример

Давайте создадим generic-метод, который принимает два значения одного типа и возвращает первое из них:

public class Main { public static <T> T first(T a, T b) { return a; } public static void main(String[] args) { String res1 = first("abcde", "12345"); Integer res2 = first(1, 2); System.out.println(res1); System.out.println(res2); } }

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

"abcde" 1

Пример

Давайте создадим generic-метод, который принимает список элементов типа T и возвращает последний элемент:

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

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

"e"

Пример

Давайте создадим generic-метод с ограничением типа, который принимает число типа T и возвращает его удвоенное значение:

public class Main { public static <T extends Number> double twice(T value) { return value.doubleValue() * 2; } public static void main(String[] args) { double res1 = twice(5); double res2 = twice(1.5); System.out.println(res1); System.out.println(res2); } }

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

10.0 3.0

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

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