トッカンソフトウェア

Enum


今回はEnum(列挙型)をやります。



引数なし

				
package test;

import java.util.EnumMap;

public class EnumTest {
	public enum EnumPet {
		DOG, CAT
	}

	public static void main(String[] args) {

		System.out.println(".values()でループできます。");

		for (EnumPet pet : EnumPet.values()) {
			String petName = pet.name();
			int petIndex = pet.ordinal();
			System.out.println(petName);
			System.out.println(petIndex);
		}

		System.out.println("\n.toString()、.name()で文字列に出来ます。");

		String string = EnumPet.DOG.toString();
		System.out.println(string);

		System.out.println("\n.valueOfで文字列からEnumに戻せます。");
		String strType = "CAT";
		EnumPet cat = EnumPet.valueOf(strType);
		System.out.println(cat);

		System.out.println("\nEnumMapというEnum専用のMapもあります。");
		EnumMap<EnumPet, String> eMap = new EnumMap<>(EnumPet.class);
		eMap.put(cat, "猫");
		eMap.put(EnumPet.DOG, "犬");
		for (EnumPet key : eMap.keySet()) {
			System.out.println(eMap.get(key));
		}
	}
}


			
Enumはいくつかのメソッドを持ちます。
メソッド 説明
.name() 識別子を文字列で取得する
.toString() 識別子を文字列で取得する
.ordinal() 識別子の順番(0~)を取得する
.values() 識別子の配列を返す。配列は順番順になっている。
.valueOf(文字列) 文字列から識別子を取得する

またEnumをキーにする専用のEnumMapというMapがあります。これはHashMapより高速に動作するらしいです(ただし保証外)。

実行結果

				
.values()でループできます。
DOG
0
CAT
1

.toString()、.name()で文字列に出来ます。
DOG

.valueOfで文字列からEnumに戻せます。
CAT

EnumMapというEnum専用のMapもあります。
犬
猫


			

引数あり

識別子に引数を付けることができます。メソッドを用意し、指定した引数の値を取得することもできます。
				
package test;

public class EnumTest {
	public enum EnumPet {
		DOG("inu", "wan"), CAT("neko", "nya");

		private String name;
		private String koe;

		private EnumPet(String name, String koe) {
			this.name = name;
			this.koe = koe;
		}

		public String getName() {
			return this.name;
		}

		public String getKoe() {
			return this.koe;
		}
	}

	public static void main(String[] args) {

		for (EnumPet pet : EnumPet.values()) {
			System.out.println("---------");
			System.out.println(pet.getName());
			System.out.println(pet.getKoe());
		}
	}
}


			

実行結果

				
---------
inu
wan
---------
neko
nya


			



ページのトップへ戻る