我正在嘗試編寫一個方法,它接受List
並根據它創建一個新的List
。也就是說,如果輸入列表是ArrayList
,那麼我想要該方法創建一個新的ArrayList
。問題在於程序直到運行時纔會知道該列表是否爲ArrayList
或LinkedList
。如何在Java中創建與舊列表相同類型的新列表?
到目前爲止,我已經嘗試過使用clone()
方法,但我不認爲它可行,因爲List類沒有定義clone()
,並且當我將輸入列表作爲Object
並且然後克隆然後重新改寫爲一個列表,它也不起作用(我不知道爲什麼)。
你能說一點關於爲什麼你需要做到這一點,而不是簡單地說總是返回已知長度的輸入列表方便的名單? – andersoj 2011-02-27 04:17:12
另一方面,Scala集合庫通過有效地添加一個額外參數來完成此操作,該參數是您想要返回的列表類型的構建器。編譯器完成所有繁重的工作(通過「implicits」),並隱藏了庫的用戶的大部分細節。 – joev 2011-02-27 16:11:20