Прежде всего, я покажу свой код. У меня есть этот общий интерфейс:Наследование основного интерфейса Java
BaseWebserviceCool:
public interface BaseWebserviceCool<I extends SessionPeticionBaseBean, O extends WsRespuestaBaseBean> {
O create(I wsRequest);
O read(I wsRequest);
O update(I wsRequest);
void delete(I wsRequest);
}
SessionPeticionBean:
public class SessionPeticionBaseBean implements Serializable {
private String token;
private String uuidUsuarioLogado;
}
WsRespuestaBean:
public class WsRespuestaBaseBean implements Serializable
{
private String codigoRespuesta;
private String mensajeRespuesta;
private boolean error;
private Map<String, String> errors;
}
Геттеры и сеттеры пропустили. я тогда еще один конкретный интерфейс, который расширяет выше базовый интерфейс так: WsPersonasInterface:
public interface WsPersonasInterface<I extends SessionPeticionBaseBean, O extends WsRespuestaBaseBean>
extends BaseWebserviceCool<I, O>
{
}
Дело в том, что мой веб-контроллер должен реализовать метод базового интерфейса через определенный интерфейс (WsPersonasInterface) , В моем контроллере я делаю что-то вроде этого:
public class PersonasController extends BaseController
implements BaseWebserviceCool<SessionPeticionBaseBean, WsRespuestaBaseBean>
{
@RolesAllowed({ "ROLE_USER" })
@RequestMapping(value = "/create/", method = { RequestMethod.POST }, headers = "Accept=application/xml, application/json")
@Override
public CreatePersonaWsRespuestaBean create(
@RequestBody @Valid CreatePersonaWsPeticionBean createPersonaPeticionBean) {
return personasBusiness.createPersona(createPersonaPeticionBean);
}
@Override
public @ResponseBody PersonaWsRespuestaBean read(
@RequestBody @Valid ReadPersonaWsPeticionBean readPersonaWsPeticionBean) {
return personasBusiness.readPersona(readPersonaWsPeticionBean);
}
Для краткости я пропустил оставшиеся методы. Но эта реализация/наиважнейшая терпит неудачу ..
I мой контроллер, CreatePersonaWsRespuestaBean и PersonaWsRespuestaBean классы, наследующий от WsRespuestaBean и CreatePersonaWsPeticionBean и ReadPersonaWsPeticionBean наследует от SessionPeticionBaseBean.
Несомненно, проблема с дизайном, любой умный ум дает несколько советов?
Я не понимаю, почему веб-контроллер _my должен реализовать метод базового интерфейса через определенный интерфейс. –
Если я правильно понимаю, вы просто хотите заменить 'реализует BaseWebserviceCool' by 'реализует WsPersonasInterface '. В чем проблема? –
Я использую интерфейсы для тестирования. «Основной общий интерфейс» предоставляет типичные операции CRUD, но моему контроллеру могут потребоваться некоторые конкретные операции, такие как «findUserByName», которые не определены в «базовом интерфейсе». – alxsimo