| Java FAQ | ||
| JSP FAQ | ||
| Servlet FAQ | ||
|
Advertisement
|
Why the fully qualified name of a static final variable is not allowed in static initialization block?
Let's start with the following example:
public class Program {
static final int var;
static {
Program.var = 8; // Compilation error
}
public static void main(String[] args) {
System.out.println(Program.var);
}
}
And,
public class Program {
static final int var;
static {
var = 8; //OK
}
public static void main(String[] args) {
System.out.println(Program.var);
}
}
Why the fully qualified name of the static final variable is not allowed in static initialization block? The rules governing definite assignment in Chapter 16. Definite Assignment:
According to the above rules governing definite assignment, we can have the following code:
public class Program {
static final int var1;
final int var2;
static {
var1 = 8; //OK
}
{
this.var2=10; //OK
}
public static void main(String[] args) {
.....
}
}
Further Reading
Chapter 16. Definite Assignment
|