Javaでよく出てくる「enum」。聞いたことはあるけど、なんとなく難しそう…と感じていませんか?定数と何が違うの?どう使うの?と迷っているあなたにぴったりの記事です。
私も最初は「intで定数使えばいいじゃん」と思っていました。でも、実務でenumを使いこなすようになってから、バグが減り、コードも見やすくなったんです。
この記事では、enumの基本から応用までをやさしく解説。実際のコード例とともに「なぜ使うべきか」がストンと理解できるようになります。
「やっとenumの意味がわかった」「if文よりswitchと組み合わせたら最高に見やすい」といった声も多く寄せられています。
曜日や状態(ステータス)の管理にenumを使うと、コードがグッとわかりやすくなります。
この記事を読み終えるころには、enumの達人になっているはず!それでは、enumの世界に出発しましょう!
enumの基本的な使い方がわからない
enumって何?
enum(列挙型)は「決まった値の集合」を扱うときに使う特別な型です。
曜日、性別、状態(ON/OFF)など、選択肢が決まっている場面では、enumを使うことでミスを防げます。
具体例を見てみましょう!
public enum Day {
MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
上の例では、Day.MONDAY
などの形で使えます。
enumは「選べる値が決まっているとき」の定番道具です!
enumを使うメリットがピンとこない/使うべきタイミングがわからない
なぜintやStringではダメなの?
enumは「安全」で「意味が伝わる」コードを作れます。
変数のintやStringだと、間違った値でもコンパイルが通ってしまいます。でもenumなら、指定された値しか使えません。
具体例:
public enum Gender {
MALE, FEMALE
}
Gender g = Gender.MALE; // OK
Gender g = "男"; // エラー!
enumは「間違った値を排除する」セーフティガードなんです。
enumにフィールドやメソッドを定義できることを知らない/使い方が難しい
enumにもデータを持たせられる!
enumはただの定数じゃなく、「値」や「処理」も持てます。
Javaのenumはクラスのような性質があるため、フィールドやコンストラクタ、メソッドを定義できます。
具体例を見てみましょう!
public enum Status {
SUCCESS(200), ERROR(500);
private int code;
Status(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}
Status s = Status.SUCCESS;
System.out.println(s.getCode()); // 200
「処理付き定数」=enumの真骨頂!
switch文とenumを組み合わせた使い方がわからない
enum × switchは相性抜群
switch文はenumと一緒に使うと、コードがとても読みやすくなります。
caseで列挙値を使うことで、条件分岐がスッキリ整理できます。
具体例を見てみましょう!
Day today = Day.MONDAY;
switch (today) {
case MONDAY:
System.out.println("週の始まり!");
break;
case FRIDAY:
System.out.println("週末目前!");
break;
default:
System.out.println("普通の日");
}
switchとenumで「読みやすさ」と「安全性」を両立することができます!
enumを文字列や数値と変換したい(toString / valueOf など)
enumと文字列・数値の変換テクニック
enumは name()
や valueOf()
を使えば、文字列との相互変換ができます。
画面入力やデータベースから受け取った値をenumに変換したいことはよくあります。
具体例を見てみましょう!
// enumから文字列
System.out.println(Day.MONDAY.name()); // "MONDAY"
// 文字列からenum
Day d = Day.valueOf("MONDAY");
文字列がenumにない場合は IllegalArgumentException
が発生します。try-catchでの対処が必要です。
文字列とenumの相互変換は、画面連携や外部システム連携で必須です!
まとめ:enumを使いこなして安全で読みやすいコードへ!
この記事では、Javaのenumについて以下のようなポイントを学びました:
- enumとは「決まった選択肢」を扱う特別な型
- intやStringより安全で、意味も明確になる
- フィールドやメソッドを持たせることで拡張性も抜群
- switch文と相性がよく、分岐が整理しやすい
- 文字列との変換もでき、外部との連携も可能
初心者でも「enumって便利!」と実感できるはず。まずは簡単なenumを作って、実際に動かしてみましょう。使えば使うほど、その便利さがわかってくるはずです!