Java enum列挙

伊谢尔伦
リリース: 2016-11-25 10:37:35
オリジナル
1669 人が閲覧しました

ほとんどのプログラミング言語では、列挙型は一般的に使用される必須のデータ型になりますが、Java ももちろん例外ではありません。ただし、Java の Enum 列挙型には予想外の用途がたくさんあります。以下を見てみましょう。

1. enum に変数とメソッドを追加できます

まずコード例を見てみましょう:

public enum State {
        Normal("正常态", 1), Update("已更新", 2), Deleted("已删除", 3), Fired("已屏蔽", 4);
        // 成员变量
        private String name;
        private int index;
 
        // 构造方法,注意:构造方法不能为public,因为enum并不可以被实例化
        private State(String name, int index) {
            this.name = name;
            this.index = index;
        }
 
        // 普通方法
        public static String getName(int index) {
            for (State c : State .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;
        }
    }
ログイン後にコピー

上記のコードから、列挙値を定義した後、その後ろにセミコロンを追加することがわかります。他の変数とメソッドを定義します。さらに、enum のコンストラクターはパブリックとしてマークできないことに注意してください。これは、ユーザーが enum をインスタンス化できないようにするためです。

2. 定数の定義に使用できます

まず、Java で定数を定義する方法を確認しましょう:

public static final int normalState = 1;
private static final int updateState = 2;
ログイン後にコピー

上記の定数定義を置き換えるために enum 列挙を使用することもできます。以下:

public enum State { 
  Normal, Update, Deleted, Fired
}
ログイン後にコピー

Java で定数を定義するために enum を使用することに構文上の利点はありませんが、enum 列挙型はより多くの操作関数を提供できます。

3. enum にインターフェースを実装する

まずは次のコードを見てみましょう:

public interface ICanReadState {
        void read();
 
        String getState();
}
 
    public enum State implements ICanReadState {
        Normal("正常态", 1), Update("已更新", 2), Deleted("已删除", 3), Fired("已屏蔽", 4);
 
        private String name;
        private int index;
 
        private State(String name, int index) {
            this.name = name;
            this.index = index;
        }
 
        // 接口方法1
 
        @Override
        public String getState() {
            return this.name;
        }
 
        // 接口方法2
        @Override
        public void read() {
            System.out.println(this.index + ":" + this.name);
        }
    }
ログイン後にコピー

一般的なクラスでインターフェースを使用するのと同じように、enum もインターフェースを継承し、インターフェース内のすべてのメソッドを実装できます。それは、列挙内の値に対する並べ替え、比較、その他の操作が簡単であり、カプセル化が優れているということです。

概要

端的に言うと、enum 列挙型は継承できない最終クラスです。上記の State 列挙型を例に挙げると、enum 型のバイトコードを見ると、それは実際にはクラスの静的定数です。状態タイプの。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート