javaの列挙
1918 ワード
列挙類概要:
Java 5は、エムキー(class、interfaceキーワードと同じ位置)を追加し、エニュメレーションクラスを定義します。エニュメレート・クラスも特殊なクラスですので、クラスと同じ変数と方法を持っています。また、自分のコンストラクタを定義することもできます。
列挙類入門:
列挙クラスの定義:
エニュメレート・クラスの使用:
実行結果:
列挙類と普通類の違い:
1、エニュメレート・クラスは一つまたは複数のインターフェースを実現し、エンム定義のエニュメレーション類を使用して、デフォルトではjava.lang Eum類を継承しています。Object類をデフォルトで継承するのではなく、エニュメレート・クラスは他の親類を明示的に継承することができません。このうちjava.lang Eum類はjava.lang Serialzableとjava.lang.Comprableの二つのインターフェースを実現しました。
2、enum定義、非抽象的なエニュメレート・カテゴリーを使用してデフォルトではfinal修飾が使用されますので、エニュメレーション類は子供を派遣することができません。
3、列挙類のコンストラクタはprvateアクセス制御子しか使えません。コンストラクタのアクセス制御子を省略したら、デフォルトでprvate修飾を使用します。アクセス制御子を強制的に指定すると、prvate修飾子しか指定できません。
4、エニュメレート・クラスのすべてのインスタンスは、エニュメレート・クラスの最初の行に明示的にリストされなければならない。そうでなければ、このエニュメレート・クラスは永遠にインスタンスを生成できない。これらの例を列挙する時、システムは自動的にpublic static finalの修飾を添加して、プログラマの明示的な添加を必要としません。
Java 5は、エムキー(class、interfaceキーワードと同じ位置)を追加し、エニュメレーションクラスを定義します。エニュメレート・クラスも特殊なクラスですので、クラスと同じ変数と方法を持っています。また、自分のコンストラクタを定義することもできます。
列挙類入門:
列挙クラスの定義:
package com.alibaba.oop;
// ,
public enum EnumTest {
// 4
SPRING,SUMMER,FALL,WINTER;
}
エニュメレート・クラスの使用:
public class TestEnum{
public void judge(EnumTest e) {
//switch
switch(e) {
case SPRING:
System.out.println(" ");
break;
case SUMMER:
System.out.println(" ");
break;
case FALL:
System.out.println(" ");
break;
case WINTER:
System.out.println(" ");
break;
}
}
public static void main(String[] args) {
// value ,
for(EnumTest e:EnumTest.values()) {
System.out.println(e);
}
// , EnumClass.variable
new TestEnum().judge(EnumTest.SPRING);
}
}
実行結果:
SPRING
SUMMER
FALL
WINTER
列挙類と普通類の違い:
1、エニュメレート・クラスは一つまたは複数のインターフェースを実現し、エンム定義のエニュメレーション類を使用して、デフォルトではjava.lang Eum類を継承しています。Object類をデフォルトで継承するのではなく、エニュメレート・クラスは他の親類を明示的に継承することができません。このうちjava.lang Eum類はjava.lang Serialzableとjava.lang.Comprableの二つのインターフェースを実現しました。
2、enum定義、非抽象的なエニュメレート・カテゴリーを使用してデフォルトではfinal修飾が使用されますので、エニュメレーション類は子供を派遣することができません。
3、列挙類のコンストラクタはprvateアクセス制御子しか使えません。コンストラクタのアクセス制御子を省略したら、デフォルトでprvate修飾を使用します。アクセス制御子を強制的に指定すると、prvate修飾子しか指定できません。
4、エニュメレート・クラスのすべてのインスタンスは、エニュメレート・クラスの最初の行に明示的にリストされなければならない。そうでなければ、このエニュメレート・クラスは永遠にインスタンスを生成できない。これらの例を列挙する時、システムは自動的にpublic static finalの修飾を添加して、プログラマの明示的な添加を必要としません。