Enumを使ってみた
軽〜いネタです。Enumをちょっと触ってみました。
Enumちゃんは私のバイブルその1『SUN SJC-P 認定ガイド JAVA5/6編 310-055&310-065対応』を読んでもよく分からず、職場でも一度も見かけずここまで来てしまった子です。
まぁじゃんけんを作っているときも、多分これEnum使うんだろうな普通と思いながらスルーしました(うん、自分そういうとこある)。いい加減やろう。
さてどう学ぶか・・・はじめ、Java SE 8のJavadoc見て、在るメソッド全部試そうかとか思ったのですが全然意味がなさそうだったのでやめました。
結局ひしだまさんのホームページと上記の本に助けていただきながら、身近なネタで遊んでみました。仲良くしてくださっている愛しの先輩方が順番に参上する、ちびプログラムです。
まず、知っておいたほうがいいかなと判断したポイントをメモ。
●基本的なこと
○定義する!
基本的な定義の仕方は次のような感じ。
enum Hand {ROCK, SCISSORS, PAPER,;}
・最後の定数(ここではPAPER)のあと、カンマはあってもなくてもいい ・列挙したあとにも書きたい処理があるとき、最後のセミコロンをつけなくてはいけない ・Enumはクラス、またはクラスのメンバとして定義できる ・Enumはメソッドの内部に定義できない |
○コンストラクタに値を渡す!
次のようにしてコンストラクタに値を渡せる。
enum Hand {ROCK(0), SCISSORS(2), PAPER(5),;}
・Enumの持つコンストラクタは直接呼び出すことが出来ず、意識する必要もない |
▶書いたプログラムでも試してみた。詳細な使い方はそっち参照ということで。
○定数にアクセスする!
Enumの名前と定数の名前でアクセスしたいときは次のように書く。
Hand.ROCK;
[Enumの定義されたクラス名].Hand.ROCK;
・[Enum名].[定数名]と書けばよい ・外側のクラスにあるメンバにアクセスしたいときはEnumが定義されているクラス名も要る |
●学んだメソッド
○定数の名前を返すメソッド
public final String name()
public String toString()
・toString()の方だけオーバーライドが出来る |
○定数をすべて取得するメソッド
public static T[] values()
・列挙された値の配列を返す |
▶今回使ってみた。mainメソッドで何すっかなーと思ったんだけど、とりあえずちょっとEnumさわってみようという程度なので、全パターン(列挙子の数だけ)順番に表示してみるだけにした。
続いて、動かしてみたやつ。特に入力とかはなし、単純極まりないのだけど合っているのか…。
はい。本当にさっぱり分からなかった頃よりはマシになった気がします。
これから頑張ってじゃんけんに反映します。なお、次のような懸念があります。
わたし今後半年くらいじゃんけんやってる気がする
— サイホーンよこな (@ihcomega) January 7, 2015
では、このへんで。
勝手にネタにされた@syobochimさん、@ngsw_taroさん、@yy_yankさん、大変申し訳ありません。ありがとうございました。
最後に・・・
ブログにてコードとかを綺麗に埋め込む方法が分からずにおる。