It's not a secret anymore!
The moose likes Beginning Java and the fly likes ClassCast Exception Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "ClassCast Exception" Watch "ClassCast Exception" New topic

ClassCast Exception

Shelly Biswal

Joined: Sep 07, 2007
Posts: 17
Hi all,

i compiled the following code and it compiled but gave me a run time exception followed by the code


Inside O
I am a Dog
Add Animal
Added Animal
Exception in thread "main" java.lang.ClassCastException
at o.main(

1) Why did it compile in the first place?
2) At runtime why Cast Exception, i am extending from Dog and casting o to it
3) if i change O = (o)dog to O = dog , it throws compile time error as follows :
found : Dog
required: o
O = dog;
1 error

Why so???
bart zagers
Ranch Hand

Joined: Feb 05, 2003
Posts: 234
(2)The variable dog is pointing to a Dog object and you want to cast this to an o object (horrible name by the way), but a Dog is not an o, therefore this is not possible and you get a ClassCastException.
(3)Same reason, a dog is not an o, therefore you can not just assign it to O.
(1)It compiles because it could have worked. When the dog variable would have been pointing to an o object, it would have been fine. (because an o is a Dog)

Try replacing the line


and see what happens.

You seem a little confused by the fact that an o is also a Dog, but a Dog is not an o.
[ September 27, 2007: Message edited by: bart zagers ]
I agree. Here's the link:
subject: ClassCast Exception
It's not a secret anymore!