Hi Feng,
Feng Qian wrote:
...
testconstA.java modified
public class testconstA {
public static final z = 7;
}
The solution is to assign the value of ConstantValue attribute to a
static field in <clinit> explicitly (create one if no <clinit>
exists) before any other real code in original <clinit>...
So, you are saying that you want to change such a class into:
testconstA.java modified again
public class testconstA {
public static final z;
static {
z = 7;
}
}
I would really prefer that the ConstantValue attribute be preserved
instead of adding an assignment statement. Execution of static blocks
happen at a later time than initialization of fields with ConstantValue
attributes, according to the JVM spec. [In other words, constant fields
are initialized with their value before <clinit>() is called].
Etienne