我有一个函数f
,它获取 a 的子列表LinkedList
并将其传递给g
,它也需要 a 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);
}
但这不会编译,因为显然LinkedList.subList
返回List
而不是LinkedList
. 所以我必须把它改成这样:
LinkedList<T> l2 = (LinkedList<T>)l.subList(i,j);
为什么?