Ваш метод возвращает необработанный ArrayList
, поэтому компилятор это позволяет.Однако во время выполнения делается попытка привести LinkedList
(экземпляр, который вы передали методу getBatches
) к ArrayList
, что приводит к ClassCastException
.
Если вы изменили свой методto:
private static ArrayList<ArrayList<Integer>> getBatches(List<Integer> optionIds) {
return new ArrayList<>(Arrays.asList(optionIds));
}
вы получите ошибку компиляции.
Чтобы избежать ошибок компиляции и времени выполнения, вам необходимо преобразовать List
, переданный в ваш метод, в ArrayList
:
private static ArrayList<ArrayList<Integer>> getBatches(List<Integer> optionIds) {
return new ArrayList<>(Arrays.asList(new ArrayList<>(optionIds)));
}
. Это вернет ArrayList
, чей единственный элемент - ArrayList
, содержащий те же элементы, что и List
, переданный методу.