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,
The static block would be necessary (or at least useful) if two different variables are interdependant and can't be initialized independently.
Suppose you need to read two values from a file, for example. You could store both values in an additional object. But if you really want two constants, a static block is useful.
I would suggest to use whatever syntax keeps your code clean and readable:
if the initialization amounts to one, max two, very simple lines of code, then go with the static block;
if the initialisation is a complex operation, then a method with a good name will be best;
in doubt, use the method syntax and use the method name to declare not only which variable, but also how you are initializing (i.e. initializeValueWithRandomNumber() );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With