Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Tu je príklad na ilustráciu:
```java
Object obj =new Object();
skúste {
String str =(String) obj; // Pokus o pretypovanie objektu na reťazec
} catch (ClassCastException e) {
System.out.println("Vyskytla sa výnimka ClassCast");
}
```
V tomto príklade je objekt `obj` inštanciou generickej triedy `Object` a my sa ho pokúšame pretypovať na `String`. Keďže „Object“ nie je „String“ a medzi nimi nie je žiadna implicitná konverzia typu, výsledkom je „ClassCastException“.
Tu sú kľúčové body, ktoré si treba zapamätať o výnimke „ClassCastException“:
1. Vyskytuje sa počas behu, keď dôjde k pokusu o priradenie objektu jedného typu k premennej alebo odkazu iného, nekompatibilného typu.
2. Stáva sa to, keď je odkaz na podtriedu priradený odkazu na nadtriedu, ale podtrieda nie je platnou podtriedou nadtriedy.
3. Vyhodí sa pri volaní metód alebo pri prístupe k poliam na objekte, ktorý nie je správneho typu.
4. "ClassCastException" sa dá vyhnúť zabezpečením správnej typovej kontroly a pretypovania pri práci s objektmi rôznych tried.
5. Odporúča sa použiť operátor `instanceof` na kontrolu kompatibility objektov pred pretypovaním, aby sa zabránilo `ClassCastException`.
```java
if (obj instanceof String) {
String str =(String) obj; // Bezpečné liatie
} inak {
throw new ClassCastException("Nie je možné odovzdať " + obj.getClass().getName() + "na reťazec");
}
```