У меня есть интерфейс 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...