《Effective Java 2》读书笔记:第33条:用EnumMap代替序数索引

读到相和相变那个例子的时候,我自然想到一个问题:为什么不用Map<Map<Phase,Phase>,Transition>这样的结构来表示相和相变之间的关系?
细心地看一下,SOLID,LIQUID,GAS三个相根据排列组合能构成六个相变。但是,它们两两组成一个Map,却只能组成三个相变,因为键只有三个,不可能有诸如<SOLID,LIQUID>和<SOLID,GAS>这样的Map同时存在。所以,这个结构是不能用的。有一个例外,如果只有两个相,比如SOLID和GAS,则它两的排列组合与能够形成的Map个数碰巧是相等的,都是两个。这个情况过于特殊,很少会碰上,还是不用为妙,况且书中使用的结构才具有一般性。
Recent Comments - 最新评论