今天的題目考察的是 Java 泛型與數組的交互限制。請看以下代碼片段:
package Nov2016;
import java.util.List;
public class Ques1107 {
public static void main(String[] args) {
List<String>[] list = new List<String>[];
}
}
問題: 主程序能否正常編譯通過?
答案:無法編譯通過。
在 Java 中,不能創建參數化類型的數組。即 `new List<String>[]` 是非法的。這是因為數組在運行時保留類型信息(具體化),而泛型通過類型擦除實現,兩者機制衝突。若允許這樣做,會破壞類型安全,導致運行時出現 ClassCastException 而編譯器無法檢測。
正確的做法是使用集合類(如 List<List<String>>)或使用 @SafeVarargs 註解的可變參數方法來模擬類似需求。
更多每日一題請關注公眾號或簡書專欄「Java每日一題」,歡迎訂閱交流進步。