假设我有一个类似下面的函数:
public static List<Integer> empty(List<Integer> list) {
List<Integer> empty = new ArrayList<>();
return empty;
}我想返回一个与传入的列表具有相同实现的列表。对于我的示例函数,只有在传入的列表是ArrayList的情况下才是这样。如何根据list的实现来初始化列表(例如,如果list是一个LinkedList,那么返回的列表将是一个LinkedList)?
发布于 2019-09-10 00:25:05
不知道你为什么需要这个。对我来说,这是一个糟糕的设计。但是,您可以使用reflection来完成此操作
public static List<Integer> empty(List<Integer> list) throws InstantiationException, IllegalAccessException {
Class<? extends List> c = list.getClass();
return c.newInstance();
}注意:只有当List实现类有一个公共的可访问的空构造函数时,上面的例子才有效,否则你会得到一个异常。
https://stackoverflow.com/questions/57857751
复制相似问题