Java列挙によくある7つの用法
13380 ワード
原文:http://www.iteye.com/topic/1116193
DK 1.5は新しいタイプの列挙を導入しました.Javaでは「小さい」機能ですが、私の開発に「大きい」便利をもたらしました.
使い方一:定数
JDK 1.5の前に、私達は定数を定義します.publicstatic fianlです.今はいいです.エニュメレーションがあります.関連する定数を一つのエニュメレート・タイプにグループ化して、エニュメレーションは常量より多い方法を提供します.
JDK 1.6前のswitch文はint、char、enumタイプだけをサポートしています.列挙を使って、コードの読み取り可能性をより強くします.
自分の方法をカスタマイズするには、enumのインスタンスシーケンスの最後にセミコロンを追加しなければなりません.そして、Javaは、まずenumインスタンスを定義しなければならない.
String()方法でカバーされる例を以下に示す.
すべての列挙はjava.lang.Enum類から継承されています.Javaは継承がサポートされていないため、列挙対象は他のクラスを引き継ぐことができません.
java.util.EnumSetとjava.util.EnumMapは二つの列挙の集まりです.EnumSetは、集合中の要素が重複しないことを保証する.EumMapのkeyはenumタイプですが、valueは任意のタイプです.この2つのセットの使用についてはここで詳しく説明しないで、JDK文書を参照することができます.
DK 1.5は新しいタイプの列挙を導入しました.Javaでは「小さい」機能ですが、私の開発に「大きい」便利をもたらしました.
使い方一:定数
JDK 1.5の前に、私達は定数を定義します.publicstatic fianlです.今はいいです.エニュメレーションがあります.関連する定数を一つのエニュメレート・タイプにグループ化して、エニュメレーションは常量より多い方法を提供します.
- public enum Color {
- RED, GREEN, BLANK, YELLOW
- }
使い方二:スイッチJDK 1.6前のswitch文はint、char、enumタイプだけをサポートしています.列挙を使って、コードの読み取り可能性をより強くします.
- enum Signal {
- GREEN, YELLOW, RED
- }
- public class TrafficLight {
- Signal color = Signal.RED;
- public void change() {
- switch (color) {
- case RED:
- color = Signal.GREEN;
- break;
- case YELLOW:
- color = Signal.RED;
- break;
- case GREEN:
- color = Signal.YELLOW;
- break;
- }
- }
- }
用法三:列挙に新しい方法を追加する自分の方法をカスタマイズするには、enumのインスタンスシーケンスの最後にセミコロンを追加しなければなりません.そして、Javaは、まずenumインスタンスを定義しなければならない.
- public enum Color {
- RED(" ", 1), GREEN(" ", 2), BLANK(" ", 3), YELLO(" ", 4);
- //
- private String name;
- private int index;
- //
- private Color(String name, int index) {
- this.name = name;
- this.index = index;
- }
- //
- public static String getName(int index) {
- for (Color c : Color.values()) {
- if (c.getIndex() == index) {
- return c.name;
- }
- }
- return null;
- }
- // get set
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getIndex() {
- return index;
- }
- public void setIndex(int index) {
- this.index = index;
- }
- }
使い方四:列挙を覆う方法String()方法でカバーされる例を以下に示す.
- public enum Color {
- RED(" ", 1), GREEN(" ", 2), BLANK(" ", 3), YELLO(" ", 4);
- //
- private String name;
- private int index;
- //
- private Color(String name, int index) {
- this.name = name;
- this.index = index;
- }
- //
- @Override
- public String toString() {
- return this.index+"_"+this.name;
- }
- }
使い方五:実現インターフェースすべての列挙はjava.lang.Enum類から継承されています.Javaは継承がサポートされていないため、列挙対象は他のクラスを引き継ぐことができません.
- public interface Behaviour {
- void print();
- String getInfo();
- }
- public enum Color implements Behaviour{
- RED(" ", 1), GREEN(" ", 2), BLANK(" ", 3), YELLO(" ", 4);
- //
- private String name;
- private int index;
- //
- private Color(String name, int index) {
- this.name = name;
- this.index = index;
- }
- //
- @Override
- public String getInfo() {
- return this.name;
- }
- //
- @Override
- public void print() {
- System.out.println(this.index+":"+this.name);
- }
- }
使い方六:インターフェースを使って列挙を組織します.
- public interface Food {
- enum Coffee implements Food{
- BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
- }
- enum Dessert implements Food{
- FRUIT, CAKE, GELATO
- }
- }
用法七:列挙集合の使用についてjava.util.EnumSetとjava.util.EnumMapは二つの列挙の集まりです.EnumSetは、集合中の要素が重複しないことを保証する.EumMapのkeyはenumタイプですが、valueは任意のタイプです.この2つのセットの使用についてはここで詳しく説明しないで、JDK文書を参照することができます.