Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpGnSu 111 of 322 menu
◀ ▶

Запись с нижней границей в Java

Для операций записи используют нижнюю границу. Запись ? super Имя означает: список готов принять элементы указанного типа и его надтипов. Читать из такого списка можно только как из источника Object.

Метод, который добавляет собаку в переданный список, принимает коллекцию с нижней границей по типу собаки:

class Animal { private final String name; Animal(String name) { this.name = name; } String getName() { return name; } } class Dog extends Animal { Dog(String name) { super(name); } } class Cat extends Animal { Cat(String name) { super(name); } } class Kennel { static void addDog(List<? super Dog> target) { target.add(new Dog("mila")); } } void demo() { List<Animal> animals = new ArrayList<>(); animals.add(new Cat("lea")); Kennel.addDog(animals); for (Object item : animals) { System.out.println(((Animal) item).getName()); } }

Список животных подходит для параметра List<? super Dog>: в него можно положить собаку, потому что каждое животное - надтип собаки для целей записи. Обратная подстановка для чтения без верхней границы не дает конкретного типа элемента:

class Sink { static void addInteger(List<? super Integer> target) { target.add(42); } } void demo() { List<Number> nums = new ArrayList<>(); Sink.addInteger(nums); System.out.println(nums.get(0)); }

Напишите метод, который добавляет новый круг в список с нижней границей по типу круга. Вызовите его для списка фигур и выведите количество элементов после добавления.

Сделайте метод, который записывает число 100 в список с границей ? super Integer. Передайте список типа Number и выведите сохраненное значение.

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