この記事は、JavaとPythonを基礎から学びたい私のための Advent Calendar 2024の6日目の記事です
理解するのに結構苦労しました。忘れると面倒なのでわかりやすく書いたつもりです。
Enum
配列やlistなんかとは似て非なるもののようです。リュックサックのよう感じで、Enumの中に必要なものを入れて、取り出したいときにEnumの中に入っているものだけ取り出せる感じです。入っていないものは取り出せません。
また、入っているものひとつひとつに番号を振ったり、別の文字を紐づけることもできるそうです。
使い方
public class Rucksack {
public static void main(String[] args) {
Nakami Toridasu=Nakami.Nomimono;
System.out.println(Toridasu);
}
enum Nakami{
Nomimono,
Saihu,
Cellphone;
}
}
いま、リュックサック(Enum)の中に飲み物、財布、携帯電話が入っているのがわかると思います。
ここから飲み物を取り出しました。
解説
始めのほうから解説します。
Nakami Toridasu=Nakami.Nomimono;
Nakami Toridasu=Nakami.Nomimono;
一番混乱するのはここだと思っています。イコールの左側でNakami Toridasuと書いてありますが、NakamiがまるでintやStringといった型のように扱われています。でも、そういうものです。
enum Nakami
enum Nakami{
Nomimono,
Saihu,
Cellphone;
}
配列やListではvoid mainの中に書いていましたが、enumはmainの外に書くようです。中に書くとエラーが出ます。
別の文字をくっつける
enumでは別の文字を紐づけることができます。例えばアイテムの選択画面を作るときに、アイテム名にアイテムの説明をくっつけて簡単に管理できます。
全文はこちら
public class Rucksack {
public static void main(String[] args) {
Nakami Toridasu=Nakami.Nomimono;
System.out.println(Toridasu.getKanrenyougo());
}
enum Nakami{
Nomimono("drink"),
Saihu("money"),
Cellphone("denwa");
private String Nakanomoji;
private Nakami(String Nakanomoji){
this.Nakanomoji=Nakanomoji;
}
public String getKanrenyougo(){
return Nakanomoji;
}
}
}
さっきとの違いを見ていきます。
解説
Nomimono("drink"),
Saihu("money"),
Cellphone("denwa");
関連する文字は()でくっつきます。
private String Nakanomoji;
これは、後で関連付けた文字を入れていろいろ使うためのものです。
private Nakami(String Nakanomoji){
this.Nakanomoji=Nakanomoji;
}
ないとエラーになります。中がnullのthis.Nakanomojiに、中身が入ったNakanomojiを代入しています。
public String getKanrenyougo(){
return Nakanomoji;
}
これが呼ばれると、呼んだ文字(例えばsaifu)に対応した文字(この例ではSaifuに対応している"Money")が返されます。
その結果、必要な文字をを返してくれる機能ができます。
番号を振る
文字を紐づける時と大体同じです。違いは、stringがintなどになるくらいです。うまく使えば、敵を倒した時の経験値を付与する部分とかが作れそうです。
ちなみに、さっきの分のEnumの文字を数字に変えて、Stringをintに変換したものがこちら↓
public class Rucksack {
public static void main(String[] args) {
Nakami Toridasu=Nakami.Nomimono;
System.out.println(Toridasu.getKanrenyougo());
}
enum Nakami{
Nomimono(1),
Saihu(2),
Cellphone(3);
private int Nakanomoji;
private Nakami(int Nakanomoji){
this.Nakanomoji=Nakanomoji;
}
public int getKanrenyougo(){
return Nakanomoji;
}
}
}
これで、文字に対応した数字を出すことができます。
まとめ
Enumは使い方によっては結構使えそうな感じです。文字に数字や別の文字をくっつけられるので使い勝手がいいと思います。まだ使ってないならぜひ使ってみてください。
参考文献