/** * singleton with init would be good for unit test as well, and it ensures that * initialization happens only once before you use it. * @param config * @param dao */ public void init(Map<String, Map<String, T>> initialAlertDefs, PolicyDefinitionDAO<T> dao, Config config){ if(!initialized){ synchronized(this){ if(!initialized){ internalInit(initialAlertDefs, dao, config); initialized = true; } } } }