Sembra che sia di nuovo bloccato con java generics. Ecco quello che ho:Classi incompatibili di generici java
paio di classi:
class CoolIndex implements EntityIndex<CoolEntity>
class CoolEntity extends BaseEntity
Enum utilizzando le classi di cui sopra:
enum Entities {
COOL_ENTITY {
@Override
public <E extends BaseEntity, I extends EntityIndex<E>> Class<I> getIndexCls() {
return CoolIndex.class;
}
@Override
public <E extends BaseEntity> Class<E> getEntityCls() {
return CoolEntity.class;
}
}
public abstract <E extends BaseEntity, I extends EntityIndex<E>> Class<I> getIndexCls();
public abstract <E extends BaseEntity> Class<E> getEntityCls();
}
Funzione ho bisogno di chiamare con l'utilizzo dei risultati delle getIndexCls()
chiamata di funzione:
static <E extends BaseEntity, I extends EntityIndex<E>> boolean isSomeIndexViewable(Class<I> cls)
Il problema è che il compilatore si lamenta return CoolIndex.class;
e return CoolEntity.class;
e non è chiaro per me perché ... Certo che posso gettarlo ai Class<I>
(primo caso), ma sembra a me come sto cercando di mascherare la mia incomprensione e non sembra giusto.
Correlati (può aiutare): http://stackoverflow.com/q/20973221/1225328 – sp00m
Un paio di altre strategie: http://stackoverflow.com/questions/11490485/how-to-implement-enum-with-generics – azurefrog
Un problema molto simile a http://stackoverflow.com/questions/28234960/java-generics -and-enum-loss-of-template-parameters – EpicPandaForce