Узнайте на что унаследованный класс это указывает - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть один базовый класс BASE и пара унаследованных классов BASE_1, BASE_2 ,, BASE_3.У меня в коде тест BASE, но как узнать, на какой класс он указывает: BASE_1, BASE_2 или BASE_3?

Ответы [ 4 ]

3 голосов
/ 13 апреля 2011
BASE test = getSomeBase();

// method 1
System.out.println(test.getClass().getName());  // prints the classname

// method 2
if (test instanceof BASE_1) {
   // test is a an instance of BASE_1
}
3 голосов
/ 13 апреля 2011

Чтобы увидеть имя класса конкретного объекта, вы можете использовать:

test.getClass().getName();

Но вас это не должно волновать, поскольку любая функциональность, которая зависит от того, какой у вас подкласс, должна быть реализована как переопределенная («полиморфные») функции в этих подклассах.

3 голосов
/ 13 апреля 2011

Мне не ясно, что вы спрашиваете, но вы можете использовать метод getClass() и оператор instanceof.

Если это что-то вроде

Base b = new Child1();
b.getClass();//will give you child1
2 голосов
/ 13 апреля 2011

Вы можете использовать instanceof для проверки определенного типа или .getClass() для получения Class объекта, описывающего определенный класс:

Base test = getSomeBaseObject();

System.out.println("test is a " + test.getClass().getName());
if (test instanceof Base1) {
  System.out.println("test is a Base1");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...