java - 如何在 Java 中创建与旧列表相同类型的新列表?

标签 java list generics clone

我正在尝试编写一个接受 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/

相关文章:

python - 如何在 for 循环中部分匹配 Python 中的列表?

java - Java 中的 ArrayList 内的 Arraylist 内的 Arraylist

generics - 通用函数和 async_trait 的困难

java - 什么是NullPointerException,我该如何解决?

java - SpringBoot 说 "Request method ' POST' 不支持

java - 如何使用在 Tomcat 服务器中运行的 JavaEE 应用程序从文件夹中检索图像?

python - 从 CSV 中删除新行\n 读取

python - 打印一个列表,三个点出现在子列表中

c# - Cast uint -> double 无效?

java - Glassfish 上的 Hibernate 不是实体异常