考慮以下程式碼片段:
此程式碼在Java 6 和7 中都能成功編譯。但是,如果 List 引用被宣告為原始類型:
它會導致編譯器錯誤,指出需要 String[],但找到了 Object[]。此行為是意外的,因為 toArray 方法簽署為:
,這表明該方法是參數化的,並且其類型參數與 List 的類型參數無關。
要理解為什麼此程式碼無法編譯,重要的是要注意,對實例參考使用原始類型會使對其任何實例成員使用泛型的能力無效。此行為不限於泛型方法,如以下程式碼片段所示:
Java 語言規格(4.8) 中指定了此限制:
「建構函式的型別不是從其超類別或超介面繼承的原始類型C 的實例方法或非靜態字段M 是與C 對應的泛型聲明中其類型擦除相對應的原始類型。
以上是為什麼對列表引用使用原始類型會妨礙通用方法的使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!