Два идентичных интерфейса: все же, нельзя ли привести один к другому? - PullRequest
1 голос
/ 25 марта 2012

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

У меня следующая проблема: у меня есть интерфейс a и библиотека, которую я скачал как часть учебника, которая использует (реализованный) интерфейс типа a и отображает его в графическом интерфейсе.Проблема в том, что он не компилируется;затмение говорит, что я должен разыграть его.Когда я это делаю, он компилируется, но выдает ошибку приведения.

Странно то, что оба интерфейса имеют одинаковый код.Фактически, я скопировал и вставил библиотеку поверх моей, и она все еще не работает.

Как может получиться, что два интерфейса имеют одинаковый код, но я не могу привести?Что не так с моей реализацией интерфейса?

Если вам нужна дополнительная информация, пожалуйста, сообщите мне!

Ответы [ 3 ]

9 голосов
/ 25 марта 2012

Нельзя выполнять приведение между двумя несвязанными интерфейсами независимо от того, является ли их определение идентичным или нет.Язык просто не позволяет этого.Два разных объявления интерфейса, даже если они идентичны, приводят к двум разным интерфейсам.

Вам необходимо изменить дизайн так, чтобы у вас был только один интерфейс, а все клиенты и исполнители интерфейса ссылались на один и тот жеинтерфейс.

0 голосов
/ 26 марта 2012

Приведение типов просто означает преобразование одного типа ссылки на объект в другой тип ссылки на объект. источник и пункт назначения должны быть связаны наследованием, чтобы выполнить повышение или понижение. Это означает, что либо классы должны быть связаны с отношением подкласс-суперкласс, либо определенный интерфейс должен расширять интерфейс для приведения в него.

http://www.informit.com/articles/article.aspx?p=30871&seqNum=5

0 голосов
/ 25 марта 2012

Является ли один из них стандартным интерфейсом?Вы должны сделать один из них extend другим.

Вероятно, вам не следует создавать второй идентичный интерфейс, а просто использовать существующий в ваших классах.

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