java.lang.ClassCastException Java में अनचेक्ड एक्सेप्शन में से एक है। यह हमारे प्रोग्राम में तब हो सकता है जब हमने एक क्लास टाइप के ऑब्जेक्ट को दूसरे क्लास टाइप के ऑब्जेक्ट में कन्वर्ट करने का प्रयास किया हो।
ClassCastException कब थ्रो होगा
- जब हम पैरेंट क्लास के ऑब्जेक्ट को इसके चाइल्ड क्लास टाइप में कास्ट करने का प्रयास करते हैं, तो यह एक्सेप्शन थ्रो होगा।
- जब हम एक क्लास के ऑब्जेक्ट को दूसरी क्लास टाइप में कास्ट करने का प्रयास करते हैं जिसने दूसरी क्लास को एक्सटेंड नहीं किया है या उनके बीच कोई संबंध नहीं है।
उदाहरण
class ParentTest {
String parentName;
ParentTest(String n1){
parentName = n1;
}
public void display() {
System.out.println(parentName);
}
}
class ChildTest extends ParentTest {
String childName;
ChildTest(String n2) {
super(n2);
childName = n2;
}
public void display() {
System.out.println(childName);
}
}
public class Test {
public static void main(String args[]) {
ChildTest ct1 = new ChildTest("Jai");
ParentTest pt1 = new ParentTest("Adithya");
pt1 = ct1; // चाइल्ड को पैरेंट में असाइन - OK (अपकास्टिंग)
pt1.display();
ParentTest pt2 = new ParentTest("Sai");
ChildTest ct2 = (ChildTest)pt2; // पैरेंट को चाइल्ड में कास्ट - एरर (डाउनकास्टिंग)
}
}
आउटपुट
Jai
Exception in thread "main" java.lang.ClassCastException: ParentTest cannot be cast to ChildTest
at Test.main(Test.java:30)
pt1 = ct1 काम करता है (चाइल्ड → पैरेंट, अपकास्टिंग)। (ChildTest)pt2 फेल होता है क्योंकि pt2 वास्तव में ParentTest इंस्टेंस है, ChildTest नहीं। कास्ट करने से पहले instanceof चेक करें।