Я задавался вопросом, ничего плохого с вызовом статического метода от статического блока для инициализации статических переменных, то есть я могу использоватьвызова статический метод от статического блока
public class AppProperties {
private static final Logger logger = LoggerFactory.getLogger(AppProperties.class);
private static final String PARSER_PROPERTIES_FILE = "/parser.properties";
private static final Properties PARSER_PROPERTIES = new Properties();
private static final Properties DAO_PROPERTIES = new Properties();
static {
loadParserProperties();
loadDaoProperties();
//some other configuration
}
public static void loadParserProperties() {
//loading...
}
...
}
Это нормально практика?
EDIT: Oracle говорит, что лучший способ затем статический является инициализируется так:
class Whatever {
public static varType myVar = initializeClassVariable();
private static varType initializeClassVariable() {
// initialization code goes here
}
}
Они говорят
Преимущество частных статических методов является то, что они могут быть повторно использованы позже если вам нужно повторно инициализировать переменную класса.
Однако код для AppProperties
также может использоваться повторно, поэтому это должно быть хорошим решением для повторного использования. Я просто чувствую, что чего-то не хватает, нет упоминания о вызове статических методов из статических блоков в любом месте, поэтому я думаю, что это плохая практика.