Cra*_*lus 4 java linked-list list arraylist
如果我有这样的方法(为简单起见假设整数):
public static List<Integer> doSomething(List<Integer> list) {
// logic here
}
Run Code Online (Sandbox Code Playgroud)
我需要我的处理内部创建一个新列表,我将创建并以某种方式填充并返回给调用者,我怎么能这样做,因为我不知道调用者传入的列表类型是什么?
我不想返回List调用者传入的不同类型.
例如,如果调用者传递一个LinkedList,我不希望返回ArrayList.
如何最好地解决这个问题?
你不应该将你的实现绑定到特定的实现List,使用接口的想法是,从外部来看,只要它符合List接口,你实例化的具体类就不重要了.
编辑:
无论如何,这是一种可能的方式:
List<Integer> lst1 = new ArrayList<Integer>();
Class<?> klass1 = lst1.getClass();
List<Integer> copy1 = (List<Integer>) klass1.newInstance();
System.out.println(copy1.getClass().getName());
> java.util.ArrayList
List<Integer> lst2 = new LinkedList<Integer>();
Class<?> klass2 = lst2.getClass();
List<Integer> copy2 = (List<Integer>) klass2.newInstance();
System.out.println(copy2.getClass().getName());
> java.util.LinkedList
Run Code Online (Sandbox Code Playgroud)
正如您在控制台中看到的,副本是与原始列表相同的类的实例.
| 归档时间: |
|
| 查看次数: |
3130 次 |
| 最近记录: |