gpt4 book ai didi

java - Java中枚举单例有什么用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:02 25 4
gpt4 key购买 nike

四人组在介绍单例模式的时候,也不得不解释一下,为什么不用静态的类字段和方法来代替。原因是:继承的可能性。对于 Java,它是有意义的——我们通常不能继承类字段和方法。

后来《Effective Java》这本书出现了。而我们现在知道,反射的存在破坏了单例类私有(private)构造函数的奇异性。制作真正的 SINGLEton 的唯一方法是将其作为枚举的单个项目。好的。我自己也这样做过一些。

但是还有一个问题:虽然我们不能继承枚举,但是这个单例有什么用呢?为什么我们不使用这些旧的好静态/类字段和方法?

编辑。感谢 @bayou.io 我在 https://softwareengineering.stackexchange.com/a/204181/44104 中看到了有一个代码也可以欺骗枚举,并再次创建枚举单例的两个范例。那里也提到了其他问题。那么,也没有必要使用枚举来代替通常的单例类模式吗?顺便说一句,到目前为止这里提到的所有枚举加号,也适用于单例类。

最佳答案

这个单例有什么用?为什么我们不使用这些旧的好静态/类字段和方法?

因为enum是一个对象,所以它不仅可以传递,还可以实现接口(interface)。

此外,由于我们正在创建一个类,因此我们可以使用适用于各种类的不同公共(public)/私有(private)选项。

所以在实践中,我们可以创建一个实现接口(interface)的单例,然后在我们的代码中传递它,调用代码是不明智的。我们还可以将枚举类包设为私有(private),但仍将其传递给其他包中需要该接口(interface)的其他类。

如果我们使用静态方法版本,那么调用类必须知道这个对象是一个单例,并且我们的单例类必须是公共(public)的,以便其他类可以看到它并使用它的方法。

关于java - Java中枚举单例有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com