如何推断此泛型类型的上限?

时间:2012-11-09 10:55:30

标签: java generics

我有一个如下界面:

public interface ImportedEntity<T extends ImportedEntity<T, E>, E extends Enum<E>>

我想要一个具有该接口的 upperbound 的类:

Class<ImportedEntity<?, ?>> c = ImportedEntity.class;
Class<ImportedEntity<?, ?>> c = ImportedEntitySubclass.class;

由于通配符,这些显然无法编译,但就我应该使用的而不是通配符而言,为了让它编译,我的脑袋即将爆炸。< / p>

最糟糕的是我可以使用原始类型,但是我觉得如果我这样做我会在某个地方出错。

1 个答案:

答案 0 :(得分:2)

您可以在右侧添加未经检查的演员表,如下所示:

Class<ImportedEntity<?, ?>> c = (Class<ImportedEntity<?, ?>>) ImportedEntity.class;
Class<ImportedEntity<?, ?>> c = (Class<ImportedEntity<?, ?>>) ImportedEntitySubclass.class;

我担心某处你必须进行未经检查的演员并接受警告,因为class属性无法保存类型信息。