enum
データ型とEnumeration
インターフェースに違いはありますか?私は2つの間で混乱しました。
私はそれらが関連していないという私の答えを得ましたが、それは私に別の質問をもたらします。
インターフェイスをインスタンス化できません。この線の意味は何ですか
Enumeration days = dayNames.elements();
その行を含む完全なコードがここにあります
import Java.util.Vector;
import Java.util.Enumeration;
public class EnumerationTester {
public static void main(String args[]) {
Enumeration days;
Vector dayNames = new Vector();
dayNames.add("Sunday");
dayNames.add("Monday");
dayNames.add("Tuesday");
dayNames.add("Wednesday");
dayNames.add("Thursday");
dayNames.add("Friday");
dayNames.add("Saturday");
days = dayNames.elements();
while (days.hasMoreElements()){
System.out.println(days.nextElement());
}
}
}
列挙はインターフェースです:Enumeration
インターフェースを実装するオブジェクトは、一連の要素を生成します。時間。 nextElement
メソッドを連続して呼び出すと、系列の連続する要素が返されます。
たとえば、_Vector<E> v
_のすべての要素を出力するには:
_for (Enumeration<E> e = v.elements(); e.hasMoreElements();)
System.out.println(e.nextElement());
_
列挙型はデータ型です:列挙型は、変数を事前定義のセットにすることができる特別なデータ型です定数。変数は、事前に定義されている値の1つと等しくなければなりません。
たとえば、次のように曜日のenum
タイプを指定します。
_ public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
public static void main(String[] args)
{
System.out.ptintln(Day.SUNDAY); // print SUNDAY
}
_
2番目の質問:
インターフェイスをインスタンス化できません。この線の意味は何ですか
_Enumeration days = dayNames.elements();
_
dayNames
はVector
と同様のコレクションであるList
です。 (違いはありますが、それは質問の範囲を超えています。)ただし、daynames.elements()
が呼び出されると、ベクトルdaynames
のコンポーネントの列挙が返されます。返されたEnumerationオブジェクトは、このベクターに追加されたすべてのアイテムを生成します。生成される最初の項目は_index 0
_の項目、次に_index 1
_の項目、というようになります。
簡単に言うと、Enumeration
はレガシーIterator
であり、Enum
はデータ型です。
列挙型 Javaのインスタンス制御クラスです。タイプがサポートできるさまざまなフレーバーを事前定義できます。例のために。
public enum Direction {
EAST, WEST, NORTH, SOUTH
}
という名前のタイプを定義します 方向 これは4つのタイプがあります。型定義の外からこれらの型をインスタンス化することは許可されていません。あなたはより多くをチェックすることができます 列挙型ここ 。
ながら 列挙 コレクションを反復処理するための古い方法でした。それは2つの方法があります nextElement そして hasMoreElements もっと似ている 次 そして hasNext の方法 イテレータ インターフェース。古いAPIでは サーブレット 返すメソッドがまだいくつかあります 列挙。例のために。
Java.util.Enumeration<String> paramNames = request.getParameterNames();
oracleに従って docs
列挙型は、変数を事前定義された定数のセットにするための特別なデータ型です。変数は、事前に定義されている値の1つと等しくなければなりません。一般的な例には、コンパスの方向(NORTH、SOUTH、EAST、およびWESTの値)と曜日が含まれます。
列挙型の例
public class EnumTest {
Day day;
public EnumTest(Day day) {
this.day = day;
}
public void tellItLikeItIs() {
switch (day) {
case MONDAY:
System.out.println("Mondays are bad.");
break;
case FRIDAY:
System.out.println("Fridays are better.");
break;
case SATURDAY: case SUNDAY:
System.out.println("Weekends are best.");
break;
default:
System.out.println("Midweek days are so-so.");
break;
}
}
public static void main(String[] args) {
EnumTest firstDay = new EnumTest(Day.MONDAY);
firstDay.tellItLikeItIs();
EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
thirdDay.tellItLikeItIs();
EnumTest fifthDay = new EnumTest(Day.FRIDAY);
fifthDay.tellItLikeItIs();
EnumTest sixthDay = new EnumTest(Day.SATURDAY);
sixthDay.tellItLikeItIs();
EnumTest seventhDay = new EnumTest(Day.SUNDAY);
seventhDay.tellItLikeItIs();
}
}
出力は次のとおりです:
Mondays are bad.
Midweek days are so-so.
Fridays are better.
Weekends are best.
Weekends are best.
列挙
Enumerationインターフェースは、オブジェクトのコレクション内の要素を列挙(一度に1つずつ取得)できるメソッドを定義します。
列挙の例
import Java.util.Vector;
import Java.util.Enumeration;
public class EnumerationTester {
public static void main(String args[]) {
Enumeration days;
Vector dayNames = new Vector();
dayNames.add("Sunday");
dayNames.add("Monday");
dayNames.add("Tuesday");
dayNames.add("Wednesday");
dayNames.add("Thursday");
dayNames.add("Friday");
dayNames.add("Saturday");
days = dayNames.elements();
while (days.hasMoreElements()){
System.out.println(days.nextElement());
}
}
}
出力
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday