枚举实现单例模式怎么传参数?

发布于 2022-09-11 18:59:49 字数 441 浏览 22 评论 0

import controller.ReadXMLConfig;

public enum XMLDataCollection {

    INSTANCE;
    
    private ReadXMLConfig instance;
    
    XMLDataCollection(String xmlpath)
    {
        instance = new ReadXMLConfig(xmlpath);
    }
    
    public ReadXMLConfig getInstance()
    {
        return instance;
    }
    
}


比如这样子,,new ReadXMLConfig(xmlpath),这不就要求ReadXMLConfig构造方法公开了吗,还怎么保证自己是单例?

不传参数又怎么知道要读哪个xml,网上都找不到例子参考。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

兮子 2022-09-18 18:59:49

查找下枚举的实现逻辑。

想清楚你是想要 ReadXMLConfig 的单例还是 XMLDataCollection 的单例,为什么要混到一起呢。

泅渡 2022-09-18 18:59:49

实现接口的enum单例(接口省略)

public enum Singleton implements MySingleton {
  INSTANCE;

  @Override
  public void doSomething() {
    System.out.println("complete singleton");
  }

  public static MySingleton getInstance() {
    return Singleton.INSTANCE;
  }
}
夜灵血窟げ 2022-09-18 18:59:49

我劝你还是多看看单例相关的博文吧,网上很多的。

由于 priavte 只能在类内部访问,所以单例一般都是这个类自己的单例,也就是说,ReadXMLConfig 的单例通常是通过 ReadXMLConfig.getInstance() 来实现,而不是另一个类的 getInstance() 来实现。

Spring 中配置的配置的单例除外,那个是单例由框架来保证,而不是由语法来保证。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文