jQuery in Action, 2nd edition*
The moose likes Beginning Java and the fly likes Problem with ClassCastException Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Problem with ClassCastException" Watch "Problem with ClassCastException" New topic
Author

Problem with ClassCastException

Sudhanshu Gupta
Greenhorn

Joined: May 02, 2009
Posts: 23
hi all,
I was taking the self test in SCJP study guide where this code confused me.



This code throws ClassCastException when Tree is downcast to Redwood.
But I dont understand why. To try this out I used an existing code and tried upcasting and downcasting.
I dont understand how come this one is working fine.




Regards

Sudhanshu Gupta


Thanks & Regards

Sudhanshu Gupta

Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24187
    
  34

Sorry to say, my friend, but you are mistaken; your example is not working fine. It will compile, yes, but at runtime, the line

NewTest n = (NewTest)t1; //throws no exception

absolutely will throw a ClassCastException. A cast can never actually change an object; it can only tell the compiler something that is true. So the first cast, from a NewTest object to class Test, is OK, because a NewTest is-a Test. But the second cast fails, since the object is really an instance of Test, and can't be converted to NewTet. There's a third thing you can do which does work, and I think that's the interesting case that you're missing:

Test t2 = new NewTest();
NewTest t3 = (NewTest) t2;

You can't make the second assignment without the cast, but with the cast, it's legal, since t2 really does hold a NewTest instance.


[Jess in Action][AskingGoodQuestions]
Sudhanshu Gupta
Greenhorn

Joined: May 02, 2009
Posts: 23
hi Ernest Friedman-Hill
thank you very much for clearing my confusion.
Actually I was thinking of collections which return Object instances that can be cast to other types.
The third thing you told about clarified everything.
thank you once again.

Regards

Sudhanshu Gupta
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Problem with ClassCastException