Tengo el siguiente modelo para hacer controladores en mi solicitud. Obviamente, el modelo completo es más complejo pero se centrará en la única parte que está causando problemas me:
public abstract AbstractController<T> {
abstract protected Class<T> getType();
}
public ParentController extends AbstractController<Parent> {
@Override
protected Class<Parent> getType() {
return Parent.class;
}
}
Ahora me gustaría extender el objeto de Padres y tienen un controlador para el hijo, que se vería así:
public SonController extends ParentController {
@Override
protected Class<Son> getType() {
return Son.class;
}
}
El problema es que la incompatibilidad método getType () muestra en la compilación (espera que el Parent clase).
Traté de jugar con los genéricos, pero no puedo encontrar una solución. El getType método se utiliza en varios métodos desde el controlador abstracto y realmente me gustaría evitar anulando aquellos.
Cualquier idea sería bienvenido.
Se podría cambiar el getType
retorno Class<? extends T>
.
abstract protected Class<? extends T> getType();
A continuación, ParentController
y SonController
se vería
public class ParentController extends AbstractController<Parent> {
@Override
protected Class<? extends Parent> getType() {
return Parent.class;
}
}
public class SonController extends ParentController {
@Override
protected Class<? extends Parent> getType() {
return Son.class;
}
}