假设您java.util.Collection在方法中有类型的引用,并且无法说明java.util.Collection它在运行时指向的实现,是否可以克隆集合?
我想实现一个泛型方法,它将过滤给定的任何类型的集合.因此,该方法将java.util.Collection作为输入.但除此之外,我不想修改原始集合,所以我想克隆集合.
不幸的是,接口Collection没有说明实现Clonable接口的任何内容.
但你总能做的是复制集合:
List<T> copy = new ArrayList<T>(original);
Run Code Online (Sandbox Code Playgroud)
如果您只想确保它没有被修改,那么用一个unmodidfiable集合包装它而不是克隆它:
Collection<T> unmodifiable = Collections.unmodifiableCollection(original);
Run Code Online (Sandbox Code Playgroud)
我看到三个选项:
依赖集合自己的 编辑:正如评论和其他答案中所指出的,clone方法(假设它实现Cloneable),然后删除不需要的元素。clone()它不是公开的,因此无法访问。
要求调用者提供一个空集合以在源和目标之间复制目标元素。
定义一个工厂接口来创建一个空集合并要求调用者提供工厂实现。然后在源和目标之间复制目标元素。
| 归档时间: |
|
| 查看次数: |
8788 次 |
| 最近记录: |