У меня есть функция f
, которая получает подсписок в LinkedList
и передает его g
, который также принимает LinkedList
:SubList LinkedList возвращает список вместо 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);
Почему?
Программирование на интерфейсы, а не реализации. –