Limitación extender los genéricos en Java, alguna manera de conseguir alrededor de él?

Gonzalo Calvo :

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.

user7:

Se podría cambiar el getTyperetorno Class<? extends T>.

abstract protected Class<? extends T> getType();

A continuación, ParentControllery SonControllerse 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;
    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=138111&siteId=1
Recomendado
Clasificación