У меня есть интерфейс ICoreClient
, и классы AClient
и BClient
реализуют это.
ICoreClient
отображается для пользователей.
Мне нужно добавить новый метод в интерфейс ICoreClient
. Таким образом, он должен быть реализован в обоих клиентах. Я не могу сделать этот метод обобщенным, поскольку он имеет совершенно разные сигнатуры, но аналогичные функции.
У меня есть 2 интерфейса xx
и yy
ClientA
реализует xx
и ClientB
реализует yy
Итак, я решил добавить новый testMethod
в ICoreClient
, который предоставит мне экземпляр xx
или yy
в зависимости от клиентов.
Я хочу вернуть экземпляр этих интерфейсов из одного метода в зависимости от условия.
В ClientA
:
public xx testMethod(){
return instanceof xx;
}
В ClientB
:
public yy testMethod(){
return instanceof yy;
}
Что мне следует писать в интерфейсе ICoreClient
?
public zz testMethod()
Я попытался помещать фиктивный интерфейс zz
(действуя как общий супертип), как это делают xx
и yy
. Но все еще не удалось выставить методы xx
и yy
в своих соответствующих клиентах, поскольку в итоге он получил тип zz
.
Есть ли какой-либо известный подход для такого рода сценариев?
Изменить. Если я возвращаю тип Object
, метод этих интерфейсов не будет отображаться. Хотя Object содержит экземпляр xx
или yy
,
Пользователю все равно нужно отбросить его (xx
или yy
, как он будет знать?) для использования методов в интерфейсе. Я хочу разоблачить методы ClientX
без необходимости нажатия на ClientA
или ClientB
...