java - 返回与传入参数相同的 List 实现

标签 java class interface-implementation

假设我有一个类似于以下内容的函数:

public static List<Integer> empty(List<Integer> list) {
    List<Integer> empty = new ArrayList<>();
    return empty;
}

我想返回一个与传入列表具有相同实现的列表。对于我的示例函数,仅当传入的列表是 ArrayList 时才成立。如何根据 list 的实现初始化列表(例如,如果 list 是 LinkedList,则返回的列表将是 LinkedList)?

最佳答案

不知道为什么你需要这个。对我来说,这是一个糟糕的设计。但是,您可以使用反射来做到这一点:

public static List<Integer> empty(List<Integer> list) throws InstantiationException, IllegalAccessException {
    Class<? extends List> c = list.getClass();
    return c.newInstance();
}

注意:上面的示例仅在 List 实现类具有公共(public)可访问的空构造函数时才有效,否则您将收到异常。

关于java - 返回与传入参数相同的 List 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57857751/

相关文章:

java - 将数据库详细信息转换为 JSON 对象

python - 第 60 行,在 make_tuple 中返回 tuple(l) TypeError : iter() returned non-iterator of type 'Vector'

java - 可以批准参数的类定义 - 带有对象和构造函数

python - 如何在python中为参数分配类型?

dart - 当包含工厂方法时如何访问抽象父类(super class)实现?

JavaFX ListView selectedItemProperty 未在clearSelection(index) 上触发

java - 在 Eclipse Kepler 中将智能插入符位置设置为注释之前

java - 无法使用Docker将Java程序连接到MySQL

c# - 是否允许类在 C# 中实现接口(interface)和额外的私有(private)方法?