A static variables can be initialized with the private static methods or with a static block. Are there any subtle difference between the two? Are there any situation where I cannot use the static method for initializing static members? I found the later more readable.
Static Block initialization :
private static int NUM_ITER;
static {
// Operations
NUM_ITER = //val from above operations.
}
Private static method initialization:
private static int NUM_ITER = calculateNumIter();
// Some method comment on how we are calculating.
private static int calculateNumIter()
{
// Operations.
return //value_from_operations.
}
I prefer the second one since it is more readable. Are there any situation I have to use only first (static blocks) ?
What is the best coding convention/design for initializing static members(final as well as variable)? Even from this thread I learned private static methods have an advantage over the static blocks.
thanks,
static Initializerblock (Your 1 option) executes when the JVM loads the class, even before anystaticvariable is initialized.Its a good place to have all the static variables at once.
Your second option can be optionally used to initialize multiple
staticvariables by passing multiple arguments to the parameter of the initializing method.