• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Forword Refferencing Question

 
Bin Zhao
Ranch Hand
Posts: 73
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 116
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic