关于单身人士财产的问题

时间:2010-05-25 08:12:44

标签: java singleton enums static-block

我正在阅读位于此处的枚举的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方法?这不会导致与原始私有构造函数公开相同的问题吗?

感谢。

1 个答案:

答案 0 :(得分:1)

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