どーも、ふぎとです。
最近はオブジェクト指向の学習を進める日々・・・。
進めるうち、classでもinterfaceでもない、
enumなる型に遭遇。
調べてみると「列挙型」というものだそう。
列挙型?
列挙型はclassでもinterfaceでもない、「第3のクラス宣言」。
特徴は、宣言と同時にその型のインスタンスが生成される
ということ。そしてそれ以降、その型のインスタンスは生
成できず、宣言時に作られたインスタンスしか使えない。
この「間違った値を使えない性質」を「型の安全性が保証
されている」という(らしい)。
public enum Language{
JAPANESE,
ENGLISH,
CHINESE
}
↑宣言した時点で、Language型のインスタンス"JAPANESE",
"ENGLISH","CHINESE"が作成される。どんな天才でもこれ
以降Language型のインスタンスを新たに作ることはできない
使い方
列挙型のインスタンスを使うときは、"(型名).(列挙子=インスタンス名)"
という風に記述する。というのも列挙型のインスタンスは、型の宣言時
から存在するstaticなインスタンスだからだ(らしい)。
import java.util.Arrays;
import java.util.List;
public class UseEnum{
public static void main(String[] args){
List<Country> list = Arrays.asList(
new Country("Japan", Language.JAPANESE),
new Country("America", Language.ENGLISH),
new Country("England", Language.ENGLISH),
new Country("CHINA", Language.CHINESE) );
list.forEach(System.out::println);
}
}
まとめ
・列挙型enumはクラス宣言のひとつ
・特徴は「型の宣言と同時にインスタンスが生成される」こと
・「誤った値を指定できない」ことを「型の安全性が保障され
ている」という
・列挙型のインスタンスはstaticなインスタンスになる
・そのため使用時は"(型名).(列挙子)"の形で記述する
(P.S.)
もっと勉強します(+o+)