Обобщенный класс в Java
Параметр типа можно задать не только у метода, но и у класса. Имя в угловых скобках после имени класса участвует в типе полей и в типе самого объекта.
Коробка держит одно значение и отдает его через метод доступа:
class Box<T> {
private final T item;
Box(T item) {
this.item = item;
}
T getItem() {
return item;
}
}
void demo() {
Box<String> textBox = new Box<>("note");
Box<Integer> numBox = new Box<>(100);
System.out.println(textBox.getItem());
System.out.println(numBox.getItem());
}
Тип Box<String> и Box<Integer> различается:
из первой читают строку, из второй - число.
Параметр T в конструкторе задает тип
хранимого значения:
class Box<T> {
private final T item;
Box(T item) {
this.item = item;
}
String describe() {
return "holds " + item.getClass().getSimpleName();
}
}
void demo() {
Box<List<Integer>> box = new Box<>(List.of(1, 2));
System.out.println(box.describe());
}
Сделайте класс с одним параметром типа и
полем для хранимого значения. Создайте
объект со строкой "kit" и выведите
поле.
Добавьте метод, который принимает второе
значение того же типа и возвращает список
из текущего значения и аргумента. Для
коробки с "a" и аргумента "b"
выведите список.