看来我又遇到了Java泛型问题。以下是我的情况:
有几个类:
class CoolIndex implements EntityIndex<CoolEntity>
class CoolEntity extends BaseEntity
使用上述类的枚举:
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();
}
我需要通过调用getIndexCls()
函数返回的结果来调用另一个函数:
static <E extends BaseEntity, I extends EntityIndex<E>> boolean isSomeIndexViewable(Class<I> cls)
问题在于编译器抱怨
return CoolIndex.class;
和return CoolEntity.class;
,但我不清楚为什么会这样……当然,我可以将其转换为Class<I>
(第一种情况),但我感觉好像是在掩饰自己的困惑,这并不正确。