У меня возникла проблема с дженериками в Java, и я не могу найти в Интернете решение или пример того, кто использует дженерики аналогичным образом.У меня есть набор методов, которые находятся в той же структуре запроса / ответа.Например, пользователь заполняет поля в объекте Request, передает объект вспомогательному методу, и им возвращается объект Response.Все мои объекты запроса происходят из общего суперкласса Request (и аналогично, объекты Response из суперкласса Response).Я хотел бы, чтобы мои вспомогательные классы также имели согласованную структуру, поэтому я использовал интерфейс.Вот некоторый код для иллюстрации ...
Суперкласс запроса:
public class SuperRequest {
// ...
}
Пример подкласса запроса:
public class SubRequest extends SuperRequest {
// ...
}
Суперкласс ответа:
public class SuperResponse {
// ...
}
Пример подкласса ответа:
public class SubResponse extends SuperResponse{
// ...
}
Интерфейс:
public interface SomeInterface {
public <T extends SuperRequest, U extends SuperResponse> U someMethod(T request);
}
Как видно из интерфейса, я хочу передать объект, который является дочерним по отношению к SuperRequest
и я хочу вернуть объект, который является потомком SuperResponse
.Вот моя реализация:
public class SomeImplementation implements SomeInterface {
@Override
public SubResponse someMethod(SubRequest request) {
return null;
}
}
В Eclipse я получаю ошибки компиляции, потому что компилятор говорит мне, что у меня есть не реализованные методы, и запись @Override
"не переопределяет метод супертипа".
Может кто-нибудь помочь мне здесь?Мой синтаксис неверен или мое понимание дженериков немного неверно?Любая помощь с благодарностью!