JavaSE暴露列挙タイプ
1.シミュレーション列挙タイプ
クラスを定義します.
説明:WeekDayの抽象メソッドnextDay()に対してクラスも抽象として宣言する必要があります!newオブジェクトの場合は抽象的な方法を書き直します!
2.列挙タイプ簡単入門
注意:
1)最初のローのデータは、列挙されたインスタンスのみです.メンバー変数、構築方法を定義できません
2)列挙タイプには構築方法がありますが、privateとしてしか宣言できません.パラメータ付きの構築方法もあります.
3)列挙した例でパラメータ付きの構造方法を使用するには:構文はSUN(パラメータ)
4)列挙の静的メソッドvalueOf(「str」)は、文字列を列挙のオブジェクトタイプに変換できます.
運転結果:1 SUN 3.列挙中の抽象クラス
注意:
1)列挙では抽象メソッドを宣言することもできますが、列挙のインスタンス定数は、メソッドを書き換える必要があります.
クラスを定義します.
説明:WeekDayの抽象メソッドnextDay()に対してクラスも抽象として宣言する必要があります!newオブジェクトの場合は抽象的な方法を書き直します!
package cn.itcast.demo;
public abstract class WeekDay {
private WeekDay(){}//
public final static WeekDay SUN=new WeekDay() {
@Override
public WeekDay nextDay() {
return MON;
}
};
public final static WeekDay MON=new WeekDay() {
@Override
public WeekDay nextDay() {
return SUN;
}
};
public final static WeekDay TUES=new WeekDay() {
@Override
public WeekDay nextDay() {
return WED;
}
};
public final static WeekDay WED=new WeekDay() {
@Override
public WeekDay nextDay() {
return THU;
}
};
public final static WeekDay THU=new WeekDay() {
@Override
public WeekDay nextDay() {
return FRI;
}
};
public final static WeekDay FRI=new WeekDay() {
@Override
public WeekDay nextDay() {
return STA;
}
};
public final static WeekDay STA=new WeekDay() {
@Override
public WeekDay nextDay() {
return SUN;
}
};
public abstract WeekDay nextDay();
}
試験類WeekDayTestpackage cn.itcast.demo;
public class WeekDayTest {
public static void main(String[] args) {
WeekDay weekDay=WeekDay.SUN;
System.out.println(weekDay.nextDay());
}
}
印刷結果:MON2.列挙タイプ簡単入門
注意:
1)最初のローのデータは、列挙されたインスタンスのみです.メンバー変数、構築方法を定義できません
2)列挙タイプには構築方法がありますが、privateとしてしか宣言できません.パラメータ付きの構築方法もあります.
3)列挙した例でパラメータ付きの構造方法を使用するには:構文はSUN(パラメータ)
4)列挙の静的メソッドvalueOf(「str」)は、文字列を列挙のオブジェクトタイプに変換できます.
package cn.itcast.demo2;
public enum WeekDay{
// SUN(1)
SUN(1),MON;//
private int day;// ,
private WeekDay(){}// , , private
private WeekDay(int day){//
this.day=day;
}
public static void main(String[] args) {
WeekDay weekDay=WeekDay.SUN;//
System.out.println(weekDay.day);
WeekDay weekDay2=WeekDay.MON;//
System.out.println(WeekDay.valueOf("SUN"));//
}
}
運転結果:1 SUN 3.列挙中の抽象クラス
注意:
1)列挙では抽象メソッドを宣言することもできますが、列挙のインスタンス定数は、メソッドを書き換える必要があります.
package cn.itcast.demo2;
public class TrafficLampTest {
public static void main(String[] args) {
TrafficLamp lamp=TrafficLamp.GREEN;
System.out.println(lamp.nextLamp());//
}
}
enum TrafficLamp{
RED(50) {
@Override
public TrafficLamp nextLamp() {
return GREEN;
}
},GREEN(20) {
@Override
public TrafficLamp nextLamp() {
return YELLOW;
}
},YELLOW(10) {//
@Override
public TrafficLamp nextLamp() {
return RED;
}
};
private TrafficLamp(){}//
private int time;//
private TrafficLamp(int time){//
this.time=time;
}
public abstract TrafficLamp nextLamp();//
}
運転結果:YELLOW