Dog*_*Dog 2 java oop types linked-list list
我有一个函数f获取a的子列表LinkedList并将其传递给g,这也需要LinkedList:
public static <T> void g(LinkedList<T> l) {
}
public static <T> void f() {
LinkedList<T> l = new LinkedList<T>();
...
LinkedList<T> l2 = l.subList(i,j);
...
g(l2);
}
Run Code Online (Sandbox Code Playgroud)
但这不会编译,因为显然LinkedList.subList返回List而不是LinkedList.所以我必须改为:
LinkedList<T> l2 = (LinkedList<T>)l.subList(i,j);
Run Code Online (Sandbox Code Playgroud)
为什么?
subList在List接口中定义并返回一个List.如果你检查在执行LinkedList,这实际上是在父类中的一个(AbstractList),你会看到,它并没有返回LinkedList而是SubList和你的施法会抛出异常.
除非您使用特定方法LinkedList,否则解决此问题的最简单方法是更改g为:
public static <T> void g(List<T> l) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3393 次 |
| 最近记录: |