我有一个如下界面:
public interface ImportedEntity<T extends ImportedEntity<T, E>, E extends Enum<E>>
我想要一个具有该接口的 upperbound 的类:
Class<ImportedEntity<?, ?>> c = ImportedEntity.class;
Class<ImportedEntity<?, ?>> c = ImportedEntitySubclass.class;
由于通配符,这些显然无法编译,但就我应该使用的而不是通配符而言,为了让它编译,我的脑袋即将爆炸。< / p>
最糟糕的是我可以使用原始类型,但是我觉得如果我这样做我会在某个地方出错。
答案 0 :(得分:2)
您可以在右侧添加未经检查的演员表,如下所示:
Class<ImportedEntity<?, ?>> c = (Class<ImportedEntity<?, ?>>) ImportedEntity.class;
Class<ImportedEntity<?, ?>> c = (Class<ImportedEntity<?, ?>>) ImportedEntitySubclass.class;
我担心某处你必须进行未经检查的演员并接受警告,因为class
属性无法保存类型信息。