Трудно сказать, о чем вы спрашиваете, но в соответствии с Спецификацией языка Java :
В такой ситуации:
interface Fish { int getNumberOfScales(); }
interface StringBass { double getNumberOfScales(); }
class Bass implements Fish, StringBass {
// This declaration cannot be correct, no matter what type is used.
public ??? getNumberOfScales() { return 91; }
}
Невозможно объявить метод с именем getNumberOfScales с такой же сигнатурой и типом возврата, что и у обоих методов, объявленных в интерфейсе Fish и в интерфейсе StringBass, поскольку класс может иметь только один метод с заданнымподпись (§8.4).Поэтому для одного класса невозможно реализовать как интерфейс Fish, так и интерфейс StringBass.
Однако, если оба ваших интерфейса задают один и тот же тип возврата, вы можете продолжить и реализовать этот метод.Если у MyUser
и YourUser
есть общий предок, вы можете сделать List<? extends User>
или если у них нет общности, которую вы можете использовать, просто используйте List<?>.
В этот момент вы должны остановиться и рассмотретьесли общая реализация это то, что вы на самом деле хотите.Я подозреваю, что может быть более элегантное решение, если вы предоставили нам более подробную информацию о вашей проблеме.
Редактировать:
На основании вашего комментария вы хотите что-то вроде...
interface MyUserGetter { List<? extends MyUser> getUsers(); }
interface YourUserGetter { List<? extends YourUser> getUsers(); }
class UserGetterImpl { List<? extends UserImpl> getUsers(); }
Это не проверено, и я предполагаю, что с вероятностью 50% будет работать.
Архитектурное предложение состоит в том, что вместо одной реализации для двух интерфейсов вына самом деле может потребоваться две реализации одного интерфейса:
interface User {}
class MyUser implements User {}
class YourUser implements User {}
interface UserGetter { List<? extends User> getUsers(); }