ClassCastException

Spis treści

Opis

ClassCastException jest wyjątkiem z grupy wyjątków niekontrolowanych (dziedziczących po RuntimeException), więc nie ma konieczności jego obsługi. Możemy się z nim spotkać w sytuacji, gdy próbujemy dokonać rzutowania obiektu na niezgodny z nim typ. Najczęściej będzie to spowodowane błędnym wykorzystaniem polimorfizmu.

Wyjątek znajduje się w pakiecie java.lang i dzięki temu nie ma konieczności dodawania dodatkowych importów, pełna ścieżka do klasy to java.lang.ClassCastException.

Kurs Java

Przykład

ClassCastExample.java

package pl.javastart.exception.classcastexception;

public class ClassCastExample {
	public static void main(String[] args) {
		Number[] numbers = {1, 2.5, 4, 7.6};
		double sum = 0;
		for (Number number : numbers) {
			sum += (Integer)number;
		}
		System.out.println(sum);
	}
}

W programie tworzymy tablicę kliku liczb różnego typu - Integer oraz Double, a następnie chcemy je zsumować.

Przez nieuwagę w pętli zamiast rzutować na typ Double rzutujemy na Integer. Oczywiście już przy drugiej iteracji występuje wyjątek, ponieważ nie da się zrzutować wartości 2.5 na typ całkowitoliczbowy. Ostatecznie w konsoli zobaczymy komunikat z wyjątkiem.


classcastexception

Jeżeli natrafimy na wyjątek ClassCastException to raczej zamiast próbować go obsługiwać powinniśmy się zastanowić, czy naszego kodu nie da się zapisać w inny, odpory na błędy sposób.

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.