Tengo un programa como este:
class Test {
final int x;
{
printX();
}
Test() {
System.out.println("const called");
}
void printX() {
System.out.println("Here x is " + x);
}
public static void main(String[] args) {
Test t = new Test();
}
}
Si intento ejecutarlo, variable x might not have been initialized
obtengo un error del compilador como: basado en los valores predeterminados de Java, ¿debería obtener el siguiente resultado correcto?
"Here x is 0".
¿Las variables finales tendrán valores predeterminados?
si cambio mi código así,
class Test {
final int x;
{
printX();
x = 7;
printX();
}
Test() {
System.out.println("const called");
}
void printX() {
System.out.println("Here x is " + x);
}
public static void main(String[] args) {
Test t = new Test();
}
}
Estoy obteniendo resultados como:
Here x is 0
Here x is 7
const called
¿Alguien puede explicar este comportamiento?