File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes casting question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "casting question" Watch "casting question" New topic

casting question

Tosin Adedoyin
Ranch Hand

Joined: Nov 09, 2001
Posts: 43
What will happen if you attempt to compile and run the following code?
class Base {}
class Sub extends Base {}
class Sub2 extends Base {}
public class CEx{
public static void main(String argv[]){
Base b=new Base();
Sub s=(Sub) b;
1) Compile and run without error
2) Compile time Exception
3) Runtime Exception

i thought the answer will be 1 because of the cast but this was the ans
3) Runtime Exception
Without the cast to sub you would get a compile time error. The cast tells the compiler that you really mean to do this and the actual type of b does not get resolved until runtime. Casting down the object hierarchy as the compiler cannot be sure what has been implemented in descendent classes. Casting up is not a problem because sub classes will have the features of the base classes. This can feel counter intuitive if you are aware that with primitives casting is allowed for widening operations (ie byte to int).
can anyone explain i seem to be confused about object casting
Corey McGlone
Ranch Hand

Joined: Dec 20, 2001
Posts: 3271
The cast is legal because a Sub object is a Base object (inheritance relationship). Therefore a Base variable could, indeed, reference a Sub object (or vice versa). The problem is that, in this case, the variable b references a Base object, not a Sub object. A Base object is not a Sub object (it's higher on the inheritance tree), therefore, it can't be cast as one. This will result in a CastClassException, which is a RuntimeException.
I hope that makes sense,

SCJP Tipline, etc.
Joshua Kueck
Ranch Hand

Joined: Mar 14, 2002
Posts: 71
In other words, this would work..
Tosin Adedoyin
Ranch Hand

Joined: Nov 09, 2001
Posts: 43
thanks guys
I agree. Here's the link:
subject: casting question
It's not a secret anymore!