Часто при работе с Java возникает ситуация, когда необходимо определить класс объекта. Возьмем для примера следующую ситуацию: имеется класс A, от которого наследуют классы B и C. Создается объект класса B или класса C, и требуется выяснить, к какому конкретно классу он принадлежит.
class A {
}
class B extends A {
}
class C extends A {
}
public class Test {
public static void main(String[] args) {
A obj = new B();
// Вопрос: какой класс у obj?
}
}
Для решения этой задачи в языке Java существуют несколько способов.
Оператор instanceof
Первый и самый простой способ — использовать оператор instanceof. Он возвращает true, если объект является экземпляром указанного класса или его подкласса, и false в противном случае.
if (obj instanceof B) {
System.out.println("Объект является экземпляром класса B");
} else if (obj instanceof C) {
System.out.println("Объект является экземпляром класса C");
} else {
System.out.println("Неизвестный тип");
}
Метод getClass()
Второй способ — использовать метод getClass(). Он возвращает объект Class, который представляет класс данного объекта.
Class<?> clazz = obj.getClass();
System.out.println("Класс объекта: " + clazz.getName());
В данном случае будет выведено полное имя класса объекта.
Итог
Определение класса объекта в Java — распространенная задача, которую можно решить разными способами. Оператор instanceof и метод getClass() — лишь два из них. Выбор способа зависит от конкретной ситуации и требований к коду.
Перейти в телеграм, чтобы получить результаты теста



Забрать
Добавить комментарий