[... И] почему я получаю эту ошибку
При звонке:
Collections.sort(checkList);
В строке 18 метод ожидает, что ваши элементы реализуют Comparable
(чтобы можно было их сравнивать). Возможно, вы этого не знаете, но так оно и работает (как указано в документации ).
Все элементы в списке должны реализовывать интерфейс Comparable
Затем метод запускается, он пытается «привести» ваши объекты к типу Comparable
, поскольку ваш класс не реализует его, он выдает ClassCastException
Чтобы лучше понять это, попробуйте следующий код:
class Some {
}
class Test {
public static void main( String [] args ) {
Runnable r = ( Runnable ) new Some();
}
}
Если вы анализируете строку, вы можете подумать «Почему вы пытаетесь присвоить Runnable некоторым? Они не связаны!»
И вы правы, давайте посмотрим на вывод:
$ java Test
Exception in thread "main" java.lang.ClassCastException: Some cannot be cast to java.lang.Runnable
at Test.main(A.java:5)
То же сообщение об ошибке. Вы можете взглянуть на строку 5 и посмотреть актерский состав.
Это именно то, что происходит в методе Collections.sort
, но с Comparable