Java は、値と説明を実装するために Enum クラスをどのように定義しますか?

WBOY
リリース: 2023-04-29 15:16:13
転載
1750 人が閲覧しました

値と説明を実装する Enum クラスを定義する

C や Java などのコンピューター プログラミング言語では、列挙型 (Enum) は、事前定義された値のセットを定義できる特別なデータ型です。変数の場合は定数。列挙型を使用する場合、列挙型変数の値は、事前定義された値のいずれかである必要があります。

1. クラス キーワードを使用して実装された列挙型

JDK5 より前では、Java 言語は列挙型をサポートしておらず、クラスを使用して列挙型をシミュレートおよび実装することしかできませんでした。

/** 订单状态枚举 */public final class OrderStatus {    /** 属性相关 */
    /** 状态取值 */
    private final int value;    /** 状态描述 */
    private final String description;    /** 常量相关 */
    /** 已创建(1) */
    public static final OrderStatus CREATED = new OrderStatus(1, "已创建");    /** 进行中(2) */
    public static final OrderStatus PROCESSING = new OrderStatus(2, "进行中");    /** 已完成(3) */
    public static final OrderStatus FINISHED = new OrderStatus(3, "已完成");    /** 构造函数 */
    private OrderStatus(int value, String description) {        this.value = value;        this.description = description;
    }    /** 获取状态取值 */
    public int getValue() {        return value;
    }    /** 获取状态描述 */
    public String getDescription() {        return description;
    }
}
ログイン後にコピー

2. enum キーワードを使用して実装された列挙型

JDK5 は、新しい Java 列挙型を提供します。キーワード enum は、名前付きの値のセットを変換できます。有限コレクションは、新しいオブジェクトとして作成されます。これらの名前付きの値は定数として使用できるため、非常に便利な機能です。

/** 订单状态枚举 */public enum OrderStatus {    /** 常量相关 */
    /** 已创建(1) */
    CREATED(1, "已创建"),    /** 进行中(2) */
    PROCESSING(2, "进行中"),    /** 已完成(3) */
    FINISHED(3, "已完成");    /** 属性相关 */
    /** 状态取值 */
    private final int value;    /** 状态描述 */
    private final String description;    /** 构造函数 */
    private OrderStatus(int value, String description) {        this.value = value;        this.description = description;
    }    /** 获取状态取值 */
    public int getValue() {        return value;
    }    /** 获取状态描述 */
    public String getDescription() {        return description;
    }
}
ログイン後にコピー

実際、Enum 型は構文糖衣であり、コンパイラは構文の解析とコンパイルに役立ちます。逆コンパイルすると、Java 列挙型がコンパイル後に実際にクラスを生成し、java.lang.Enum を継承し、values() や valueOf() などの列挙型の一般的なメソッドを追加していることがわかります。

以上がJava は、値と説明を実装するために Enum クラスをどのように定義しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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