加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

用枚举enum替代int常量

发布时间:2020-12-14 06:22:23 所属栏目:Java 来源:网络整理
导读:枚举的好处: 1. 类型安全性 2.使用方便性 div class="cnblogs_code" 3),BLUE(5),BLACK(8),YELLOW(13),GREEN(28 Color( .colorValue= /spanspan style="color: #0000ff;"gt;private/span span style="color: #0000ff;"gt;int/spanspan style="color: #000000

枚举的好处:

1. 类型安全性

2.使用方便性

<div class="cnblogs_code">

 3),BLUE(5),BLACK(8),YELLOW(13),GREEN(28  Color(.colorValue=     </span><span style="color: #0000ff;"&gt;private</span> <span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; value(){
        </span><span style="color: #0000ff;"&gt;return</span> ordinal()+1<span style="color: #000000;"&gt;;
    }

}
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #0000ff;">for<span style="color: #000000;">(Color s : Color.values()) {
<span style="color: #008000;">//<span style="color: #008000;">enum的values()返回一个数组,这里就是Seasons[]
System.out.println(s.value()+":"+s.name()+"="+<span style="color: #000000;">s.getColorValue());
}
}
}

output:

1:RED=32:BLUE=53:BLACK=84:YELLOW=135:GREEN=28

其中,

?EnumMap是专门为枚举类型量身定做的Map实现。虽然使用其它的Map实现(如HashMap)也能完成枚举类型实例到值得映射,但是使用EnumMap会更加高效:它只能接收同一枚举类型的实例作为键值,并且由于枚举类型实例的数量相对固定并且有限,所以EnumMap使用数组来存放与枚举类型对应的值。这使得EnumMap的效率非常高。

java.util.*<span style="color: #0000ff;">public <span style="color: #0000ff;">enum<span style="color: #000000;"> Phase {
SOLID,LIQUID,GAS;
<span style="color: #0000ff;">public <span style="color: #0000ff;">enum<span style="color: #000000;"> Transition {
MELT(SOLID,LIQUID),FREEZE(LIQUID,SOLID),BOIL(LIQUID,GAS),CONDENSE(
GAS,SUBLIME(SOLID,DEPOSIT(GAS,SOLID);
<span style="color: #0000ff;">private <span style="color: #0000ff;">final<span style="color: #000000;"> Phase src;
<span style="color: #0000ff;">private <span style="color: #0000ff;">final<span style="color: #000000;"> Phase dst;

    Transition(Phase src,Phase dst) {
        </span><span style="color: #0000ff;"&gt;this</span>.src =<span style="color: #000000;"&gt; src;
        </span><span style="color: #0000ff;"&gt;this</span>.dst =<span style="color: #000000;"&gt; dst;
    }

    </span><span style="color: #0000ff;"&gt;private</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;final</span> Map<Phase,Map<Phase,Transition>> m = <span style="color: #0000ff;"&gt;new</span> EnumMap<Phase,Transition>><span style="color: #000000;"&gt;(
            Phase.</span><span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt;);
    </span><span style="color: #0000ff;"&gt;static</span><span style="color: #000000;"&gt; {
        </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt; (Phase p : Phase.values())
            m.put(p,</span><span style="color: #0000ff;"&gt;new</span> EnumMap<Phase,Transition>(Phase.<span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt;));
        </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt; (Transition trans : Transition.values())
            m.get(trans.src).put(trans.dst,trans);
    }

    </span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span><span style="color: #000000;"&gt; Transition from(Phase src,Phase dst) {
        </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; m.get(src).get(dst);
    }
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt; (Phase src : Phase.values())
        </span><span style="color: #0000ff;"&gt;for</span><span style="color: #000000;"&gt; (Phase dst : Phase.values())
            </span><span style="color: #0000ff;"&gt;if</span> (src !=<span style="color: #000000;"&gt; dst)
                System.out.printf(</span>"%s to %s : %s %n"<span style="color: #000000;"&gt;,src,dst,Transition.from(src,dst));
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读