ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
C/C++/Java、C#、VB.NETなどで、(数値の)列挙型。
Cの場合、単なる定数の列挙に過ぎず、int型との区別は曖昧であった。一方、C++では型が厳密になり、intとは明確に異なる型として処理される。
intへの代入などはCと同様問題なく行なえるが、例えばtry/catch文などにおいてenumの値をthrowしても、これをcatch(int)で捕らえることは出来ない。intではないからである。
以下は失敗する例である。
enum { ENUM_VER }; try { throw ENUM_VAR; } catch (const int n) { ... }
正常に受け取るためには、enumには識別子を付け、それを受け取る形態にせねばならない。
enum sample_enum { ENUM_VER }; try { throw ENUM_VAR; } catch (const sample_enum e) { ... }
C/C++では、enumの要素数を得る直接的な方法はない。sizeof(enum) としても、得られるのは各要素の長さであり、おそらくは sizeof(int) と等価の値でしかない。
あまり望ましくない消極的な方法としては、
enum sample_enum { a, b, c, number };
などとして、この number を使用するという方法がある(要素名は任意)。但し、各要素に値を代入しているような場合には、この方法では要素数を求めることができない。
Javaでは、JDK 1.5から対応した。この機能は、C/C++のenumに似た使い方ができる。
public enum Season { SPRING, SUMMER, FALL, WINTER }
C/C++とは異なり、実体はクラスで、java.lang.Enum である。このため、Cのような単純なintの列挙とは異なりオブジェクトの列挙となる。
実際に使うときは、Season.SPRING のようにする。メソッドを使うときは、例えば「Season.SPRING.toString()」とすると、"SPRING" という文字列が返される。
なお、switch文で使うときは、判別式には列挙型の変数のみを記述する。つまり、例えば「case Season.SPRING:」ではなく、「case SPRING:」とだけ書けば良い。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます