Получение класса объекта в Java — методы getClass и getName

Чтобы программа понимала, экземпляром какого класса является тот или иной объект, в Java есть три удобных инструмента: метод getClass(), оператор instanceof и метод isInstance() класса Class. Ниже показаны все три варианта.

Пример 1: проверка класса объекта с помощью ``getClass()``

class Test1 {
// first class
}

class Test2 {
// second class
}

class Main {
  public static void main(String[] args) {
    // create objects
    Test1 obj1 = new Test1();
    Test2 obj2 = new Test2();

    // get the class of the object obj1
    System.out.print("The class of obj1 is: ");
    System.out.println(obj1.getClass());

    // get the class of the object obj2
    System.out.print("The class of obj2 is: ");
    System.out.println(obj2.getClass());
  }
}

Вывод:

The class of obj1 is: class Test1
The class of obj2 is: class Test2

В этом примере мы использовали метод getClass() класса Object, чтобы получить имя класса для объектов obj1 и obj2.

Совет

Подробнее о методе можно почитать в справочнике по Object.getClass().

Пример 2: проверка класса объекта с помощью оператора ``instanceof``

class Test {
// class
}

class Main {
  public static void main(String[] args) {
    // create an object
    Test obj = new Test();

    // check if obj is an object of Test
    if(obj instanceof Test) {
      System.out.println("obj is an object of the Test class");
    }
    else {
      System.out.println("obj is not an object of the Test class");
    }
  }
}

Вывод:

obj is an object of the Test class

В этом примере мы использовали оператор instanceof, чтобы проверить, является ли объект obj экземпляром класса Test.

Пример 3: проверка класса объекта с помощью ``isInstance()``

class Test {
// first class
}

class Main {
  public static void main(String[] args) {
    // create an object
    Test obj = new Test();

    // check if obj is an object of Test1
    if(Test.class.isInstance(obj)){
      System.out.println("obj is an object of the Test class");
    }
    else {
      System.out.println("obj is not an object of the Test class");
    }
  }
}

Вывод:

obj is an object of the Test class

Здесь мы использовали метод isInstance() класса Class, чтобы проверить, является ли объект obj экземпляром класса Test.

Примечание

Метод isInstance() работает похоже на оператор instanceof, но он предпочтительнее, когда тип нужно проверять во время выполнения программы (например, когда сам класс Test определяется динамически).