2012-11-09 27 views
0

我有一個界面如下:如何推斷此泛型的上限?

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

我想用類UPPERBOUND該接口的

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

這些顯然不能因爲通配符的編譯,但根據我應該放的東西而不是通配符來編譯,我的腦袋即將爆炸。

最糟糕的是我可以使用原始類型,但如果我這樣做,我會覺得我會在某個地方出錯。

回答

2

您可以添加在右手邊一個未經檢查的鑄像這樣:

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

恐怕地方你將不得不作出的選中演的前車之鑑住,因爲class財產不能保存類型信息。