Javaのenum
アプリをやっているので、Javaのコードも書かねばならん。
どうも、慣れない・・・。
今回使いたかったのは、enum。
まず、Javaにenumはあるのか?から。
ある。
大昔にやったときは、ひたすらfinal使って書いていたような記憶があるが、まあ時代は変わるということか。
では使おう。
このソースでしか使わないから、privateでいいや。
private enum ETest {ENONE,
EFIRST,
};
エラー。
どうやら、privateのenumはいかんらしい。
なんでだ?
eclipseがいうには、publicでなくてはならないらしい。
protectedもだめだった。
が、なにもなしは通った。
package公開(だっけ?)はpublic扱いということか。
定義の仕方は、C++と同じ。
typedefとかしなくても使えるので、Cと同じ、とは書かない。
では、使ってみよう。
ETest val = ETest.NONE;
これは、よし。
classと同じような扱いになるので、クラス名から書かねばならん。
これはC++と違うな。
C++はCの流れを引き継いでいるから、enumはenumだ。
もし同じようにしたければ、classかnamespaceにenum定義をすることになろう。
ただその場合も、enum名ではなくclass名で解決することになる。
では、switchさせてみよう。
switch(val) {
case ETest.NONE:
break;
case ETest.FIRST:
break;
}
エラー。
どうやら、ここのcaseでは、ETest.がいらないらしい。
何でだ??
valはETest型だから、省略できる、ならば理解はできる。
書くとエラーとは何事だ!
他と書き方を共通にしたいから、許してくれないかなぁ。

最近のコメント