模拟方式一
package cn.xy.enum;
public class trafficlampeasy
{
private int time;
public final static trafficlampeasy redlamp = new trafficlampeasy(20);
public final static trafficlampeasy greenlamp = new trafficlampeasy(20);
public final static trafficlampeasy yellowlamp = new trafficlampeasy(5);
public trafficlampeasy()
{
}
public trafficlampeasy(int time)
this.time = time;
public trafficlampeasy nextlamp()
trafficlampeasy result = new trafficlampeasy();
if (this == redlamp)
{
result = greenlamp;
}
else if (this == greenlamp)
result = yellowlamp;
else if (this == yellowlamp)
result = redlamp;
return result;
public string getvalue()
string result = "";
result = "紅燈,時長:" + time;
result = "綠燈,時長:" + time;
result = "黃燈,時長:" + time;
public int gettime()
return time;
public void settime(int time)
}
trafficlampeasy tered = trafficlampeasy.redlamp;
system.out.println(tered.getvalue());
system.out.println(tered.nextlamp().getvalue());
從這個例子中我們看出,枚舉類型其實就是一個類傳回該類本身
模拟方式二
public abstract class trafficlamp
/**
* 下一個燈
*/
public abstract trafficlamp nextlamp();
* 擷取值
*/
public abstract string getvalue();
* 時長
public trafficlamp()
public trafficlamp(int time)
* 紅燈,匿名類,相當于繼承trafficlamp抽象類,并實作抽象方法
public final static trafficlamp redlamp = new trafficlamp(50) {
@override
public trafficlamp nextlamp()
return greenlamp;
public string getvalue()
return "紅燈,時長:" + this.gettime();
};
public final static trafficlamp greenlamp = new trafficlamp(50) {
return yellowlamp;
return "綠燈,時長:" + this.gettime();
public final static trafficlamp yellowlamp = new trafficlamp(2) {
return redlamp;
return "黃燈,時長:" + this.gettime();
trafficlamp red = trafficlamp.redlamp;
system.out.println(red.getvalue());
system.out.println(red.nextlamp().getvalue());
采用匿名類的方式,那麼什麼是匿名類呢?
匿名類适合那些隻需要使用一次的類
public abstract class anonymousclassdesk
public abstract double getprice();
public abstract string getname();
public class desk extends anonymousclassdesk
@override
public double getprice()
return 100;
public string getname()
return "普通書桌";
public static void main(string[] args)
anonymousclassdesk desk = new anonymousclassdesk() {
@override
public double getprice()
{
return 100;
}
public string getname()
return "匿名書桌";
};
system.out.println(desk.getname());
不僅可以使抽象類,也可以是接口。匿名類沒有什麼特别的地方,同樣還是要實作需要實作的方法。