-1
考慮此示例:鑄造界通配符無界通配符的通用類型中是錯誤的(X <Y <? extends T>>到X <Y<?>>
private <T> void m(Class<? extends T> k, Set<Class<? extends T>> sk) {
Class<?> ku = k;
Set<Class<?>> sku = sk; // <-- Type mismatch: cannot convert from
// Set<Class<? extends T>> to Set<Class<?>>
}
換句話說,我可以分配一個Class<? extends T>
到Class<?>
爲一些任意T
但不是Set<Class<? extends T>>
到Set<Class<?>>
。
它可能有事情做與協方差/逆變一定的侷限性,但什麼?
我可以介紹一個演員:Class.class::cast
會這樣做。但是有沒有一種方法可以讓編譯器根據我的意願使用精巧的類型-FU而不是用演員們的頭撞到頭部?
[嵌套通配符(http://bayou.io/draft/Capturing_Wildcards.html#Nested_Wildcards) – ZhongYu
@Sotirios - 現在我知道了【答案】(http://stackoverflow.com/a/ 32959018/7515790)我發現它是重複的,但我不知道它,因爲它忽略了任何有關嵌套通配符的東西,所以它不是明顯的匹配,這似乎使它與衆不同。 – davidbak