2

我正在阅读此处的枚举 Java 教程并有一个问题:http: //java.sun.com/j2se/1.5.0/docs/guide/language/enums.html#Card

我感到困惑的部分如下:

“上面的 Card 类包含一个返回牌组的静态工厂,但无法从其等级和花色中获取单独的牌。仅仅公开构造函数会破坏单例属性(即每张牌只有一个实例允许存在)。下面是如何使用嵌套的 EnumMap 编写一个保留单例属性的静态工厂:“

现在据我了解,将原始私有“卡片”构造函数更改为公共将允许我们实例化具有给定套装+等级的“卡片”对象的无限数量的副本。所提议的解决方案是创建一个 EnumMap,它将存储四个 Map(每个花色一个),它们本身包含 13 个 Card 对象,以等级作为键。

所以现在如果你想从牌组中检索一个特定的 Card 对象,你只需调用“valueOf”方法。我现在的问题是,什么是阻止你尽可能多次调用 valueOf 方法的原因?这不会导致与公开原始私有构造函数相同的问题吗?

谢谢。

4

1 回答 1

1

valueOf(),将始终返回相同的实例。请注意,它实际上是在一个static块中实例化所有内容。

于 2010-05-25T08:14:26.560 回答