我正在尝试编写一个接受 List
并基于它创建相同类型的新 List
的方法。也就是说,如果输入列表是一个 ArrayList
,那么我希望该方法创建一个新的 ArrayList
。问题是程序直到运行时才知道 List 是 ArrayList
还是 LinkedList
。
到目前为止,我已经尝试使用 clone()
方法,但我认为它不起作用,因为 List 类没有定义 clone()
,当我将输入列表转换为 Object
然后克隆然后重新转换为 List 时,它也不起作用(我不确定为什么)。
最佳答案
JDK 中的所有标准列表都支持克隆,所以
List copy = (List)((Cloneable)somelist).clone()
应该可以正常工作。
当然可以使用反射
Class c = somelist.getClass();
List newlist = (List)c.newInstance();
newlist.addAll(somelist);
关于java - 如何在 Java 中创建与旧列表相同类型的新列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5131318/