この記事では、java に関する関連知識を提供します。主に、列挙の基本操作、コレクション クラスによる列挙のサポートなど、列挙に関連する問題を紹介します。内容を見てみましょう。以下、皆さんのお役に立てれば幸いです。
推奨学習: 「java ビデオ チュートリアル 」
列挙は、特定の型の変数へのアクセスを許可します。値はいくつかの固定値の 1 つだけです。そうでない場合、コンパイラはエラーを報告します。列挙により、コンパイラはコンパイル中にソース プログラムによって割り当てられた不正な値を制御できます。これは、通常の変数を使用して開発段階では達成できません。 . 目標は1つ。
JDK1.5 以降では、キーワード enum を使用して列挙型と呼ばれる新しい型を定義します。
列挙型 (enum) とクラス (class)、インターフェイス (interface) は次のとおりです。同レベル
色を定義します。定義できるのは赤、緑、青の 3 色のみです
通常の方法
では、色が 3 つの色のうち 1 つだけを選択できるようにこの問題を解決するにはどうすればよいでしょうか? ? ?
enum キーワードを使用して定義された列挙クラスは、実際にはクラスの定義と同等であり、このクラスは Class Enum クラスのみを継承します。 。
public enum Color { RED, GREEN, BLUE;}
##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)); }}列挙型の基本操作コンストラクターを使用した列挙#列挙の本質は、Enum クラスを継承するサブクラスです。JVM コンパイラは列挙をコンパイルし、
final クラス# を生成します。
##列挙型は外部から呼び出すことができないため、プライベートでのみ変更できます
コンストラクターは呼び出しのみ可能ですオブジェクト内
#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;
}}
メイン メソッド
public class EnumTest { public static void main(String[] args) { Color color = Color.RED; System.out.println(color.name()); System.out.println(color.getNumber());//获取Number的值 }}
#列挙実装インターフェイス
列挙型では、インターフェイスを継承できます。インターフェイスを実装するには、列挙型クラスにメソッドを実装するか、オブジェクト内にメソッドを実装するかの 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()); }}
列挙型は抽象メソッドを実装します
列挙型では、抽象メソッドを定義できます。オブジェクトによって実装されます
列挙クラス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()); }}
列挙型の実装 シングルトン モード
列挙型は、データが指定された範囲内にあることを確認するために使用されます。列挙型に 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 インターフェイスに追加されました: EnumSet
と一个专门
Set
实现与枚举类型一起使用。 枚举集中的所有元素都必须来自创建集合时明确或隐式指定的单个枚举类型EnumSet
是一个抽象类,不能直接创建实例对象,但是可以通过方法来使用。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>
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の基本的な誘導列挙の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。