JAva 5の新しいプロパティ列挙タイプ
3169 ワード
一、シミュレーション列挙の実現原理の交通灯
1、抽象的なクラスTrafficLampを定義する.java
2、テスト類TrafficLampTest.java
二、列挙の基本使用の交通灯
1、抽象的なクラスTrafficLampを定義する.java
2、テスト類TrafficLampTest.java
3、知識点剖析
「enum」の意味列挙タイプを用いる場合、実質的に定義されたタイプはjavaから継承する.lang.Enumタイプですが、各列挙のメンバーは、定義した列挙タイプのインスタンスです.彼らはpublic finalタイプとしてプリセットされているので、彼らを変更することはできません.彼らもstaticメンバーなので、タイプ名で直接使用することができます.
Enumクラスが継承されている以上、その中の一部のメソッド、例えばname()メソッドを使用して、この列挙定数の名前を返すことができます.EnumクラスはtoStringメソッドを書き換え、列挙定数の名前を返す.その他の方法の使用も簡単で、具体的な使い方はapiドキュメントを参照することができる.
三、使用場面
作用:ある事物(対象)は予め規定されたデータのセットを定義し、記入値が合法的で、規定されたデータの範囲内を超えないことを保証する.例えば、性別、ユーザタイプ等のメンバー変数を定義場合、列挙タイプのメンバー変数としてカプセル化することができ、使いやすい.
四、まとめ
列挙タイプは特殊なクラスなので、属性やメソッドを定義することもできます.しかし、構造方法は必ず私有化しなければならない.列挙クラスのメンバーはstaticタイプであるため、列挙クラスは一例として実現できる.
1、抽象的なクラスTrafficLampを定義する.java
public abstract class TrafficLamp {
private TrafficLamp(){};
//
public abstract TrafficLamp nextLamp();
/* , , if **/
public final static TrafficLamp RED = new TrafficLamp(){
@Override
public TrafficLamp nextLamp() {
return GREEN;
}
};
/* **/
public final static TrafficLamp GREEN = new TrafficLamp(){
@Override
public TrafficLamp nextLamp() {
return YELLOW;
}
};
/* **/
public final static TrafficLamp YELLOW = new TrafficLamp(){
@Override
public TrafficLamp nextLamp() {
return RED;
}
};
/** , toString */
@Override
public String toString() {
String retVal;
if(this==RED){
retVal= "RED";
}else if(this==GREEN){
retVal = "GREEN";
}else{
retVal="YELLOW";
}
return retVal;
};
}
2、テスト類TrafficLampTest.java
public class TrafficLampTest {
public static void main(String[] args) {
TrafficLamp lamp1 = TrafficLamp.GREEN;
TrafficLamp lamp2 = TrafficLamp.RED;
TrafficLamp lamp3 = TrafficLamp.YELLOW;
System.out.println(lamp1.nextLamp());
System.out.println(lamp2.nextLamp());
System.out.println(lamp3.nextLamp());
}
}
二、列挙の基本使用の交通灯
1、抽象的なクラスTrafficLampを定義する.java
public enum TrafficLamp {
RED(30){
public TrafficLamp nextLamp(){return GREEN;}
},
GREEN(45){
public TrafficLamp nextLamp(){return YELLOW;}
},
YELLOW(45){
public TrafficLamp nextLamp(){return RED;}
};
public abstract TrafficLamp nextLamp();//
private TrafficLamp() {}
private int time;//
//
private TrafficLamp(int time){this.time=time;}
public int getTime() {
return time;
}
}
2、テスト類TrafficLampTest.java
public class TrafficLampTest {
public static void main(String[] args) {
TrafficLamp lamp1 = TrafficLamp.GREEN;
System.out.println(lamp1);
System.out.println(lamp1.name());
System.out.println(lamp1.toString());
System.out.println(lamp1.getTime());
System.out.println(lamp1.nextLamp());
}
}
3、知識点剖析
「enum」の意味列挙タイプを用いる場合、実質的に定義されたタイプはjavaから継承する.lang.Enumタイプですが、各列挙のメンバーは、定義した列挙タイプのインスタンスです.彼らはpublic finalタイプとしてプリセットされているので、彼らを変更することはできません.彼らもstaticメンバーなので、タイプ名で直接使用することができます.
Enumクラスが継承されている以上、その中の一部のメソッド、例えばname()メソッドを使用して、この列挙定数の名前を返すことができます.EnumクラスはtoStringメソッドを書き換え、列挙定数の名前を返す.その他の方法の使用も簡単で、具体的な使い方はapiドキュメントを参照することができる.
三、使用場面
作用:ある事物(対象)は予め規定されたデータのセットを定義し、記入値が合法的で、規定されたデータの範囲内を超えないことを保証する.例えば、性別、ユーザタイプ等のメンバー変数を定義場合、列挙タイプのメンバー変数としてカプセル化することができ、使いやすい.
四、まとめ
列挙タイプは特殊なクラスなので、属性やメソッドを定義することもできます.しかし、構造方法は必ず私有化しなければならない.列挙クラスのメンバーはstaticタイプであるため、列挙クラスは一例として実現できる.