Типы интерфейса Java основной вопрос - PullRequest
0 голосов
/ 18 марта 2011

У меня основной вопрос с интерфейсами Java.

Скажи, если у меня есть interface IA и interface IB extends IA

сейчас,

class CK implements IB,
class CL implements IB,
class CM implements IB,

... и т. Д.

void foo(IA iFace) {
// I know how to check if iFace is of type CK/CL/CM ...

// Is it possible to check if iFace is of type IB ?

}

Надеюсь, мой вопрос ясен.

Спасибо за любые ответы.

Ответы [ 3 ]

9 голосов
/ 18 марта 2011

Вы можете проверить, используя instanceof:

if (iFace instanceof CK)

и т.д.

... но это, как правило, признак того, что ваш дизайн пошёл не так, как надо, если вам приходится обращаться с вещами иначе. Идея интерфейса должна состоять в том, чтобы вы могли обращаться с ними одинаково и позволить реализациям вести себя по-разному соответствующим образом.

Это не всегда , так получается, поэтому иногда instanceof - лучшее, что вы можете сделать, но это должно быть редкостью.

2 голосов
/ 18 марта 2011

вы можете использовать ключевое слово instanceof

0 голосов
/ 18 марта 2011

Используйте instanceof следующим образом:

if(ObjectA instanceof ObjectB)
{
     //hooray, it is
}

Имейте в виду, что если B расширяет A, и у вас есть K, L, M, реализующий B, они являются экземплярами B и A.

Когда вы расширяете класс, вы наследуете от него и все, что он унаследовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...