I have a utility class that looks like this:
Public Ultimate Class MyUtils {The public stable final list & lt; String & gt; MY_VALUES = New Arrestist & lt; String & gt; (); {MY_VALUES.add ("foo"); MY_VALUES.add ("bar"); }} I call it from another class like this:
MyUtils.MY_VALUES If I do so, the list is empty and if I debug it, then I think the static block never runs.
As I understand the answers and the block should be run when is assigned a stable area of class , which I am currently doing. I also tried to make the variable non-last to complete the condition "a non-static static field is used ". I can use an init method, in other questions and ALS, but I still want to understand why it is not working at the first place, although I think the language specification The conditions are fulfilled from
You must add static keyword to your block to make it static : public final range MyUtils {public static final list & lt; String & gt; MY_VALUES = New Arrestist & lt; String & gt; (); Stable {MY_VALUES.add ("foo"); MY_VALUES.add ("bar"); }} A initialization block is created square each time. A Static initialization block becomes called only once at the beginning of your program.
No comments:
Post a Comment