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

Проверка интерфейса через instanceof в Java

Оператор instanceof проверяет тип значения во время выполнения. Для интерфейса выражение obj instanceof Figure даст true, если объект создан классом, реализующим Figure. Пример проверки на класс и интерфейс:

interface Figure { double area(); } class Disk implements Figure { private final double radius; public Disk(double radius) { this.radius = radius; } @Override public double area() { return 3.14 * radius * radius; } }

Создадим Disk в переменной Figure и проверим тип через instanceof:

Figure shape = new Disk(2.0); System.out.println(shape instanceof Disk); System.out.println(shape instanceof Figure);

Отрицание записывают как !(value instanceof Type). После успешной проверки внутри if переменную можно безопасно использовать как тип интерфейса:

static void describe(Object value) { if (value instanceof Figure figure) { System.out.println(figure.area()); } }

Проверка интерфейса удобна, когда в одной коллекции лежат объекты разных классов, а обрабатывать нужно только те, что подходят под общий контракт:

interface VolumeFigure { double volume(); } static void printAreas(java.util.List<Object> items) { for (Object item : items) { if (item instanceof Figure figure) { System.out.println(figure.area()); } else if (item instanceof VolumeFigure volume) { System.out.println(volume.volume()); } } }

Сделайте интерфейс Payable с методом pay.

Сделайте класс Employee, реализующий Payable.

Запишите в список Object несколько объектов Employee и других типов. Переберите список и вызовите pay только у элементов, для которых instanceof Payable даёт true.

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