2014-10-25 3 views
0

Я знаю, что у меня, вероятно, есть плохо разработанная программа, если я должен задать этот вопрос. Как я могу убедиться, что объект является типом подкласса, а не родителем подкласса?Java, экземпляр подкласса, а не суперкласс

Например:

if (r instanceof subclassRobot) { 
    //method 
} 

Я не хочу, чтобы это выполнить, если r является родителем. Мне нужен только этот метод, если r является типом подкласса.

ответ

4

Вы можете проверить сам класс, как это:

if(thing instanceof SomeClass.class && !thing.getClass().equals(SomeClass.class)) 
{ 
    // Thing can be any class that extends SomeClass, 
    // but will not belong to SomeClass itself. 
} 
0

Абсолютно прекрасный код.

Ваш p является ссылкой на семейство классов, принадлежащих к семейству базового класса. о.

if (r instanceof subclassRobot) { 
    //... 
} 

просто отлично, чтобы проверить, если вы на самом деле указывает на экземпляр subclassRobot

Смежные вопросы