aspose file tools*
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
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.
 
Consider Paul's rocket mass heater.
 
subject: Forword Refferencing Question