Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Java Language
Expertise: Beginner
Mar 21, 1997

How Code in Frame Constructs Object Whose Constructor is Declared in Another Fra

Question:
How can code in one frame construct an object whose constructor is declared in another frame? For example, new parent.SomeObject(); does not seem to work.

Why?

Answer:
Good question! As in C++, constructors in Java are not considered methods. They don't return values, and the implicit "this" parameter passed to a constructor is a pointer to the memory area allocated by the call to new immediately preceding the constructor. Thus,

new Robot(x, y, z);
is roughly equivalent to the C code:
   Robot *a;
   a = malloc(sizeof(Robot));
   Robot(a, x, y, z);

 
Assume the class Robot looks like this:
   class Robot {
      Robot(...) { ... } // Robot constructor
      SomeObject(...) { ... } // your SomeObject "constructor"
      // etc.
   }
and here's your declaration of parent:
Robot parent = new Robot(...);
Unfortunately for you, Java regards SomeObject as an ordinary Robot method, not a constructor. Thus, the call
new parent.SomeObject(x, y, z);
would (if it worked at all) pass a pointer to parent as the implicit parameter of SomeObject, not the space allocated by new:
SomeObject(parent, x, y, z);
This picture could become murky in the near future; I hear Sun is considering nested classes in a future release of Java.
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date