A singleton is simply a class that is instantiated exactly once [Gamma95]. Singletons typically represent either a stateless object such as a function (Item 24) or a system component that is intrinsically unique. Making a class a singleton can make it difficult to test its clients because it’s impossible to substitute a mock implementation for a singleton unless it implements an interface that serves as its type.
Also consider whether you should be deciding whether the class should be singleton. If you choose to enforce singleton, you've taken that choice away from your consumers. Are you sure there isn't a use case where more than on instance might make sense?
Maybe your consumer wants a "singleton" with one set of parameters, and another singleton with a different set. Or maybe they're adding support for multiple accounts, and want a "singleton" per account.
I would suggest defaulting to being flexible about instantiability and let your consumers decide whether to use a singleton of your class. And they often have good tools available to help them with that, like Spring or Dagger.