ホームページ  >  記事  >  Java  >  Javaの基本的な誘導列挙

Javaの基本的な誘導列挙

WBOY
WBOY転載
2022-05-26 11:50:332294ブラウズ

この記事では、java に関する関連知識を提供します。主に、列挙の基本操作、コレクション クラスによる列挙のサポートなど、列挙に関連する問題を紹介します。内容を見てみましょう。以下、皆さんのお役に立てれば幸いです。

Javaの基本的な誘導列挙

推奨学習: 「java ビデオ チュートリアル

列挙は、特定の型の変数へのアクセスを許可します。値はいくつかの固定値の 1 つだけです。そうでない場合、コンパイラはエラーを報告します。列挙により、コンパイラはコンパイル中にソース プログラムによって割り当てられた不正な値を制御できます。これは、通常の変数を使用して開発段階では達成できません。 . 目標は1つ。
JDK1.5 以降では、キーワード enum を使用して列挙型と呼ばれる新しい型を定義します。
列挙型 (enum) とクラス (class)、インターフェイス (interface) は次のとおりです。同レベル

事例紹介

色を定義します。定義できるのは赤、緑、青の 3 色のみです

通常の方法
Javaの基本的な誘導列挙
では、色が 3 つの色のうち 1 つだけを選択できるようにこの問題を解決するにはどうすればよいでしょうか? ? ?

Enum クラスと enum キーワード

enum キーワードを使用して定義された列挙クラスは、実際にはクラスの定義と同等であり、このクラスは Class Enum クラスのみを継承します。 。

public enum Color {
    RED,
    GREEN,
    BLUE;}

Javaの基本的な誘導列挙

一般的に使用される列挙メソッド

##protected Enum(String name,int ordinal)この構造外部から直接呼び出すことはできず、そのサブクラスによってのみアクセスできます。このコンストラクターは自動的に呼び出されます
public Final String name()列挙型の名前を返します
public String toString ()列挙型の名前を返します
public Final int ordinal()デフォルトでは 0 から始まる列挙型のシリアル番号を返します
public Final booleanquals (オブジェクトその他)2 つの列挙型が同じかどうかを判断する

コード

public class EnumTest {
    public static void main(String[] args) {
        //定义一个color变量,只能设置为RED、GREEN、BLUE
        Color color = Color.BLUE;
        System.out.println(color);
        System.out.println(color.name());
        System.out.println(color.toString());//三种方式都是打印名字
        System.out.println(color.ordinal());//返回枚举的序号RED--0、GREEN--1、BLUE--2

        Color[] values = Color.values();//返回所有枚举类型
        System.out.println(Arrays.toString(values));
    }}

Javaの基本的な誘導列挙

列挙型の基本操作

コンストラクターを使用した列挙

#列挙の本質は、Enum クラスを継承するサブクラスです。JVM コンパイラは列挙をコンパイルし、
final クラス

# を生成します。

##列挙型は外部から呼び出すことができないため、プライベートでのみ変更できます


コンストラクターは呼び出しのみ可能ですオブジェクト内 Javaの基本的な誘導列挙
#

public enum Color {
    RED(10),
    GREEN(20),
    BLUE;
    private int Number;//属性

    private Color() {//默认构造方法
        System.out.println("无参构造器被调用了!!!");
    }

    private Color(int Number) {
        this.Number = Number;
        System.out.println("有参构造器被调用了!!!");
    }
    
    public int getNumber(){
        return Number;
	}}

メイン メソッドJavaの基本的な誘導列挙

public class EnumTest {
    public static void main(String[] args) {
        Color color = Color.RED;
        System.out.println(color.name());
        System.out.println(color.getNumber());//获取Number的值
    }}

#列挙実装インターフェイス

Javaの基本的な誘導列挙 列挙型では、インターフェイスを継承できます。インターフェイスを実装するには、列挙型クラスにメソッドを実装するか、オブジェクト内にメソッドを実装するかの 2 つの方法があります。

方法 1: 列挙型オブジェクト内のインターフェイスにメソッドを実装する

interface info{
    public String getColor();}public enum Color implements info{
    RED{
        @Override
        public String getColor() {return "红色";}
    },
    GREEN{
        @Override
        public String getColor() {return "绿色";}
    },
    BLUE{
        @Override
        public String getColor() {return "蓝色";}
    };}

方法 2: 列挙型クラスのインターフェイスにメソッドを実装する

interface info{
    public String getColor();}public enum Color implements info{

    RED,GREEN,BLUE;
    
    @Override
    public String getColor() {
        return null;
    }}

メインメソッド

public class EnumTest {
    public static void main(String[] args) {
        Color color = Color.RED;
        System.out.println(color.getColor());
    }}

列挙型は抽象メソッドを実装します

Javaの基本的な誘導列挙列挙型では、抽象メソッドを定義できます。オブジェクトによって実装されます

列挙クラス

public enum Color {
    RED{
        @Override
        public String getColor() {return "红色";}
    },
    GREEN{
        @Override
        public String getColor() {return "绿色";}
    },
    BLUE{
        @Override
        public String getColor() {return "蓝色";}
    };
    //在枚举中定义一个抽象方法,通过枚举对象实现
    public abstract String getColor();}

メインメソッド

public class EnumTest {
    public static void main(String[] args) {
        Color color = Color.BLUE;
        System.out.println(color.getColor());
    }}

列挙型の実装 シングルトン モード

Javaの基本的な誘導列挙列挙型は、データが指定された範囲内にあることを確認するために使用されます。列挙型に 1 つの型 (1 つの値) しかない場合、存在するのは 1 つだけです。オブジェクトを列挙型に追加すると、シングルトン パターンを実装できます。

#列挙クラス

public enum Singletion {
    SINGLETION;
    public void Method(){
        System.out.println("使用枚举实现单例模式!!!");
    }}
メイン メソッド

public class EnumTest {
    public static void main(String[] args) {
        Singletion singletion=Singletion.SINGLETION;
        singletion.Method();
    }}

コレクション クラス列挙のサポート

JDK1.5 以降、2 つの新しいサブクラスが Set インターフェイスと Map インターフェイスに追加されました: Javaの基本的な誘導列挙EnumSet

EnumMap

2 つのサブクラス

EnumSet

一个专门Set实现与枚举类型一起使用。 枚举集中的所有元素都必须来自创建集合时明确或隐式指定的单个枚举类型
EnumSet是一个抽象类,不能直接创建实例对象,但是可以通过方法来使用。Javaの基本的な誘導列挙
EnumSet.allOf(Class<e> elementType)</e>把一个枚举类型全部填充到集合中去
public static <e extends enum>> EnumSet<e> complementOf(EnumSet<e> s)</e></e></e>创建与指定枚举集具有相同元素类型的枚举集,最初包含此类型的所有元素,该元素 不包含在指定的集合中。
public static <e extends enum>> EnumSet<e> copyOf(EnumSet<e> s)</e></e></e>创建与指定的枚举集相同的元素类型的枚举集,最初包含相同的元素(如果有)

代码

import java.util.EnumSet;public class EnumTest {
    public static void main(String[] args) {
        EnumSet<color> set = EnumSet.allOf(Color.class);//把一个枚举类型全部填充到集合中去
        for (Color c : set) {
            System.out.println(c.name());
        }
    }}</color>

Javaの基本的な誘導列挙

EnumMap

EnumMap一个专门Map实现与枚举类型键一起使用。 枚举映射中的所有密钥必须来自创建映射时明确或隐式指定的单个枚举类型。 枚举地图在内部表示为数组。 这种表示非常紧凑和高效。

代码

import java.util.EnumMap;public class EnumTest {
    public static void main(String[] args) {
        EnumMap<color> map = new EnumMap(Color.class);
        map.put(Color.RED, "红色");
        map.put(Color.GREEN, "绿色");
        map.put(Color.BLUE, "蓝色");
        System.out.println(map.get(Color.RED));
    }</color>

Javaの基本的な誘導列挙

推荐学习:《java视频教程

以上がJavaの基本的な誘導列挙の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。