permaculture playing cards*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Forword Refferencing Question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Forword Refferencing Question" Watch "Forword Refferencing Question" New topic
Author

Forword Refferencing Question

Bin Zhao
Ranch Hand

Joined: Oct 04, 2000
Posts: 73
The following code is from JLS
class UseBeforeDeclaration {
static {
x = 100; // ok - assignment
//int y = x + 1; // error - read before declaration
int v = x = 3; // ok - x at left hand side of assignment
int z = UseBeforeDeclaration.x * 2;
// ok - not accessed via simple name
Object o = new Object(){
void foo(){x++;} // ok - occurs in a different class
{x++;} // ok - occurs in a different class
};
}
{
j = 200; // ok - assignment
//j = j + 1; // error - right hand side reads before declaration
int k = j = j + 1;
int n = j = 300; // ok - j at left hand side of assignment
//int h = j++; // error - read before declaration
int l = this.j * 3; // ok - not accessed via simple name
Object o = new Object(){
void foo(){j++;} // ok - occurs in a different class
{ j = j + 1;} // ok - occurs in a different class
};
}
int w = x= 3; // ok - x at left hand side of assignment
int p = x; // ok - instance initializers may access static fields
static int u = (new Object(){int bar(){return x;}}).bar();
// ok - occurs in a different class
static int x;
int m = j = 4; // ok - j at left hand side of assignment
int o = (new Object(){int bar(){return j;}}).bar();
// ok - occurs in a different class
int j;
}
The code which will produce error have been commented. But it still can not compile though JLS said it 'll compile.
Anyone can clear this Forword Refferencing Question?
Nijeesh Balan
Ranch Hand

Joined: Oct 09, 2000
Posts: 116
Hi,
I tried out this piece of code:
[C]
class test1 extends Object{
static
{int j=1;
int i=j+1;
}
public static void main(String args[]){
//System.out.println(i);
}
}
[/C]
It got compiled and executed perfectly..
According to you or rather JLS,
x = 100; // ok - assignment
// int y = x + 1; // error - read before declaration
It is not supposed to compile..
Somebody plz., clarify..
Thanks
Nijeesh.

Thanks & Regards,<br />Nijeesh.
 
Don't get me started about those stupid light bulbs.
 
subject: Forword Refferencing Question
 
Similar Threads
JLS
Forward Referencing
Something weird in JLS (or in JBuilder)
forward reference
Field Initializations