用「super」關鍵字限制泛型:全面解釋
Java 泛型允許型別安全和程式碼可重複使用性。泛型的一方面是類型限制,其中類型參數可以被限制為特定的子類型關係。但是,與通配符不同,類型參數不能使用“super”關鍵字進行限制。
在 Collection 介面中,toArray 方法採用「S[]」類型的參數,其中「S」是型別參數。問題是為什麼該方法沒有聲明為“”而不是通配符 ''。
答案在於「超級」邊界的行為。雖然 'super' 通常與通配符一起使用 (),但將其應用於類型參數 (' 而不是 '>)意想不到的後果。 Object 是所有引用類型的超類,這意味著 'Object[]' 是 '>' 的有效參數在編譯時。這違背了綁定的目的,因為任何引用類型參數都可以傳遞,即使那些不是「T」子類別的參數也是如此。
因此,型別參數上的「超級」邊界不會提供預期的保護無效的參數。為了說明,假設方法“>” S[] toArray(S[] a)' 和'
此限制源自於泛型和陣列之間的交互作用。泛型和數組具有不同的協方差規則,從而導致觀察到的行為。
需要注意的是,此限制僅適用於型別參數。仍然可以使用“super”來綁定通配符來表達方差,如“'在 toArray 方法中,允許更大的靈活性。
更多關於泛型和類型限制的見解,請參閱以下資源:
以上是為什麼我們不能在 Java 泛型中使用「super」關鍵字來限制類型參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!