File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Cast expression

 
Albertina Gonzalez
Greenhorn
Posts: 11
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Can someone explain me with other words the casting, when reference variable and type of class? (Valentin's Mock exam)

Question 7. Select two correct statements about the code given below?
class A{}
class B extends A implements E{}//line 1
class C extends A{}
class D extends B{}
interface E{}
public class Question07 {
public static void main(String[] args) {
A a = new D();//line 2
C c = new C();//line 3
E e = (E)a;//line 4
B b = (B)e;//line 5
}
}


A. The code compiles without error and runs fine.
B. Compilation error on line 1 because interface E is not yet declared (forward-referencing).
C. Compilation error on line 4 because class A does not implement interface E.
D. The cast on line 4 is mandatory.
E. The cast on line 5 is not mandatory.
First, pay attention to the class hierarchy (B and C are sibling classes!!) Then, there is no such thing as forward-referencing issues when using interfaces declared later in the compilation unit. On line 4, we are dealing with an object whose runtime type is D which implements interface E. The cast is mandatory, though, since the reference type (A) is not assignment compatible with the reference type E. The cast on line 5 is mandatory for the same reasons.
 
Manfred Leonhardt
Ranch Hand
Posts: 1492
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Albertina,
You are correct and your explanation is good.
The two correct answers are:
A. The code compiles without error and runs fine.
and
D. The cast on line 4 is mandatory.
As you have explained in your own words ...
What is the problem?
Regards,
Manfred.
 
Reid M. Pinchback
Ranch Hand
Posts: 775
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Albertina Gonzalez:
Can someone explain me with other words the casting, when reference variable and type of class? (Valentin's Mock exam)

This is one of those things where I think it helps to distill the issues down to a set of rules that you can memorize and apply at will. Not my original idea; I got the idea from the Roberts et al cert book. I simply didn't like their rules and came up with my own. To answer this question you need to know:
a) rules for assignment conversion of references
b) compile-time rules for reference casting
c) runtime rules for runtime casting
Get those 3 sets of rules down pat and you've probably got 5% or more of the exam in the bag.
 
Albertina Gonzalez
Greenhorn
Posts: 11
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you
Thanks, Now I know the begin.
It has been helpful to see the detachhed subjects
 
I agree. Here's the link: http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic