我正在阅读位于此处的枚举的java教程,并有一个问题:http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html#Card
我感到困惑的部分如下:
“上面的卡片类包含一个 返回甲板的静态工厂, 但是没有办法得到一个 个人卡从其排名和 适合。仅仅暴露构造函数 会破坏单身人士的财产 (每个只有一个实例 卡是允许存在的)。这是怎么回事 写一个静态工厂 保留单身人士财产, 使用嵌套的EnumMap:“
据我了解,将原始的私有“Card”构造函数更改为public将允许我们使用给定的suit + rank实例化无限数量的“Card”对象副本。提出的解决方案是创建一个EnumMap,它将存储四个地图(每个套装一个),它们本身包含13个Card对象,其中等级为其键。
现在如果你想从套牌中检索一个特定的Card对象,你只需要调用“valueOf”方法。我现在的问题是,什么阻止你多次调用valueOf方法?这不会导致与原始私有构造函数公开相同的问题吗?
感谢。
答案 0 :(得分:1)
没有。 valueOf()
将始终返回相同的实例。请注意,它实际上是在static
块中实例化一次。