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

Generic-конструктор

Generic-конструктор - это конструктор, который объявляет собственные параметры типа. Такие параметры типа указываются в угловых скобках перед именем конструктора и действуют только внутри этого конструктора. Это позволяет создавать объекты с разными типами данных, даже если сам класс не является обобщенным. В угловых скобках мы указываем один или несколько параметров типа, например T или T, U.

Важно понимать, что параметры типа generic-конструктора независимы от параметров типа класса. Даже если класс объявлен как class Box<T>, конструктор может объявить свой собственный параметр типа, например <U> Box(U value).

Синтаксис

class ClassName { <T> ClassName(T value) { // тело конструктора } }

Пример

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

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

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

"12345" "abcde"

Пример

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

public class Main { public static void main(String[] args) { Pair<Integer, String> pair = new Pair<>(1, "abcde"); System.out.println(pair.getFirst()); System.out.println(pair.getSecond()); } } class Pair<K, V> { private K first; private V second; public <A, B> Pair(A first, B second) { this.first = (K) first; this.second = (V) second; } public K getFirst() { return first; } public V getSecond() { return second; } }

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

1 "abcde"

Пример

Давайте создадим класс Wrapper с generic-конструктором, который принимает список элементов любого типа и выводит их количество:

import java.util.List; public class Main { public static void main(String[] args) { Wrapper wrapper = new Wrapper(List.of(1, 2, 3, 4, 5)); System.out.println(wrapper.getSize()); } } class Wrapper { private int size; public <T> Wrapper(List<T> list) { this.size = list.size(); } public int getSize() { return size; } }

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

5

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

  • параметр типа type-param,
    который объявляется в угловых скобках
  • обобщенный метод generic-method,
    который объявляет собственные параметры типа
  • обобщенный класс class,
    который использует параметры типа
  • алмазный оператор diamond,
    который позволяет опустить тип при создании объекта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить