【发布时间】:2010-05-25 08:12:44
【问题描述】:
我正在阅读此处的枚举 Java 教程并有一个问题:http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html#Card
我比较困惑的部分如下:
“上面的 Card 类包含一个 返回甲板的静态工厂, 但没有办法得到 个人卡从其等级和 套装。仅仅暴露构造函数 会破坏单例属性 (每个只有一个实例 允许卡存在)。这是如何 编写一个静态工厂 保留单例属性, 使用嵌套的 EnumMap:"
现在据我了解,将原始私有“Card”构造函数更改为 public 将允许我们实例化无限数量的具有给定花色 + 等级的“Card”对象副本。所提议的解决方案是创建一个 EnumMap,它将存储四个 Map(每个花色一个),它们本身包含 13 个 Card 对象,以等级作为键。
所以现在如果你想从牌组中检索一个特定的 Card 对象,你只需调用“valueOf”方法。我现在的问题是,什么是阻止你尽可能多次调用 valueOf 方法的原因?这不会导致与公开原始私有构造函数相同的问题吗?
谢谢。
【问题讨论】:
标签: java singleton enums static-block