0
class Gen <T super Number> // 1 // IS NOT ALLOWED
void Demo(Gen <? super Number> ob) // 2 // IS ALLOWED // Gen is a generic class
爲什麼在編譯時錯誤,第二個發言的第一個語句的結果正常工作上界通用類和通配符
class Gen <T super Number> // 1 // IS NOT ALLOWED
void Demo(Gen <? super Number> ob) // 2 // IS ALLOWED // Gen is a generic class
爲什麼在編譯時錯誤,第二個發言的第一個語句的結果正常工作上界通用類和通配符
第一個例子是一個通用型的。第二個例子是一個參數化類型。他們是不同的東西。
泛型類型的類型參數的下界不能被使用†。這不是,所以在Java中是「一件事」。
然而,第二個例子的意思是:「Gen<T>
類型的任何參數化,其中type參數是Number的超類型」。這是有用的,因爲它允許泛型類型的polymorpyhism。
†通過提供"restricted instantiation",他們實際上可能是有限的使用,但沒有被認爲是有用的足以被允許。
'它是有用的,因爲它允許polymorpyhism的泛型類型',是否有任何其他使用參數化類型? –
@kevingomes。通配符參數化類型都是關於多態的。 'Gen