I am trying to implement a Singleton with Java enum.

But I also want to pass some parameters to the constructor when it is initialized for the first time.

How do I achieve that? Is it a good practice to have Singletons with parameter?

public enum DaoManager {
    INSTANCE;
    private static ILog logger; //for passing the logger;
    private static DatabasePool pool; //passing the Database pool

    public void init(ILog logger, DatabasePool pool){
          this.logger = logger;
          this.pool = pool;   
    }

 }

Right now I am using a init method to pass the logger and database pool to DaoManager.

But if client fails to invoke the init() method then there a good chance of failure.

Can someone please guide me on how do I do this?

Edit
Report