3 回答

TA貢獻1852條經驗 獲得超1個贊
小加成
使用泛型與數組,例如List<int[]>
,非常不兼容,因此非常不鼓勵,因為它可能導致災難性的結果。這可能會導致您真的不想遇到的所有類型的錯誤和失敗。
正如 Joshua Bloch 在他的書“Effective Java”中提到的,至少數組和泛型的任何組合都是不需要的,因為它們有很大的不同。
首先,數組是協變的。[..] 相比之下,泛型是不變的。
例如
說到數組,這是一段完全合法的代碼,它會順利編譯。但是如果您嘗試SubObject
在數組中持久化,它會在運行時失敗。
SuperObject[] arrayOfCustomObjects = new SubObject[1] // Fails at runtime, throws ArrayStoreException
在這種情況下List
,泛型是不變的,不會讓創(chuàng)建子類型的列表實例在編譯時失敗。它必須是完全相同的類型。
List<SuperObject> listOfCustomObjects = new ArrayList<SubObject> // Won't compile, must be the same types, fail-fast
數組被具體化。這意味著數組在運行時知道并強制執(zhí)行它們的元素類型。[..]
相比之下,泛型是通過擦除實現的。這意味著它們僅在編譯時強制執(zhí)行它們的類型約束,并在運行時丟棄(或擦除)它們的元素類型信息。擦除允許泛型類型與不使用泛型的遺留代碼自由互操作,確保在 Java 5 中平滑過渡到泛型。
由于這些根本差異,數組和泛型不能很好地混合。例如,創(chuàng)建泛型類型、參數化類型或類型參數的數組是非法的。
Joshua Bloch,“Effective Java”(第 3 版)
有關更多信息,請查看“Effective Java”。

TA貢獻1831條經驗 獲得超4個贊
該currentSumPairs
和sumPair
是的類型List<int[]>
。該.add()
方法需要int[]
。你不能添加List<int[]>
代替int[]
它們不一樣。
我認為你正在尋找addAll(...)
方法。
currentSumPairs.addAll(sumPair);
添加回答
舉報