Как узнать, является ли A подтипом B?
В языке Java существует три способа, которыми можно проверить совместимость типов.
Во-первых, с помощью оператора instanceof. В нем в качестве первого аргумента передаётся экземпляр класса А, второй аргумент имя проверяемого класса В. Если экземпляр А не принадлежит к цепочке наследования класса В, то А не считается подтипом В и компилятор выдаст сообщение «inconvertible types». Это наиболее быстрый и популярный способ.
Во-вторых, с помощью метода isInstance(). Его применяют, когда экземпляр А имеется, а В неизвестен. Для двух переменных: А а, и Class bClass, проверку подтипов можно выполнить так: bClass.isInstance(a).
В-третьих, если экземпляр А несуществует, то можно воспользоваться методом isAssignableFrom(). Например: bClass.isAssignableFrom(aClass). Это самый долгий по времени выполнения способ.
Иногда, для проверки применяют операцию приведения типов. В этом случае пытаются привести экземпляр А к классу В. Если эта операция не удалась, то компилятор выдаст исключение ClassCastException. Этот способ неприемлем, так как строить логику программы на исключениях – плохой стиль программирования, способный привести к появлению большого количества багов, обнаружение которых затруднено.
a instanceof В
B.class.islnstance(a)
В.class.isAssignableFrom(A.class)
// так делать не надо!
try {
final В unused = (В) a;
return true;
} catch (ClassCastException e) {
return false;
}
Peer-to-peer собеседования
AI Sprints — обучение профессиям с ИИ
Практика собеседований с менторами и другими студентами. Реальные вопросы по Kotlin, Android и Backend
- Живые собеседования: практикуйте интервью с менторами и коллегами-студентами
- Реальные вопросы: база вопросов по Kotlin, Android, Backend и QA
- Фидбек: обратная связь после каждого собеседования — знаете, что улучшить
AI Challenge — собери чат-бота за 5 дней
Бесплатный марафон по AI-инжинирингу. Cursor + OpenAI, 60 минут в день — без опыта в программировании. К пятнице у вас будет рабочий чат-бот с памятью в браузере.
- Практика с первого дня, без теории «в стол»
- Готовый проект в портфолио к концу недели
- Старт в любой день — учитесь в своём темпе