Проверьте индекс
$(this).index() == 0 // is first
Straight from the API Specifications for the ClassCastException
:
Thrown to indicate that the code has attempted to cast an object to a subclass of which it is not an Например.
Так, например, когда кто-то пытается преобразовать Integer
в String
, String
не является подклассом Integer
, поэтому будет сгенерировано исключение ClassCastException
.
Object i = Integer.valueOf(42);
String s = (String)i; // ClassCastException thrown here.
Это исключение, которое возникает, если вы пытаетесь снизить уровень класса, но на самом деле класс не этого типа.
Рассмотрим эту иерархию:
Объект -> Животное - > Dog
У вас может быть метод, который называется:
public void manipulate(Object o) {
Dog d = (Dog) o;
}
Если он вызывается с помощью этого кода:
Animal a = new Animal();
manipulate(a);
Он отлично компилируется, но во время выполнения вы получите исключение ClassCastException
, потому что o на самом деле был Животное, а не собака.
В более поздних версиях Java вы получаете предупреждение компилятора, если только вы этого не сделаете:
Dog d;
if(o instanceof Dog) {
d = (Dog) o;
} else {
//what you need to do if not
}
Прямо из спецификаций API для ClassCastException
:
Брошено, чтобы указать, что код имеет попытался передать объект в подкласс, к которому он не является
Вы пытаетесь рассматривать объект как экземпляр класса, которым он не является. Это примерно аналогично нажатию на демпферную педаль на гитаре (у пианино есть демпферная педаль, а у гитары нет).
Вы понимаете концепцию литья? Приведение - это процесс преобразования типов, который очень распространен в Java, поскольку это язык со статической типизацией. Некоторые примеры:
Преобразование String «1» в int -> нет проблем
Преобразование String «abc» в int -> вызывает ClassCastException
Или подумайте о диаграмме классов с Animal.class, Dog.class и Cat.class
Animal a = new Dog();
Dog d = (Dog) a; // No problem, the type animal can be casted to a dog, because its a dog.
Cat c = (Dog) a; // Raises class cast exception; you can't cast a dog to a cat.