在老师讲的交通灯管理系统里(视频09)有一个方法是“Lamp lamp=Lamp.valueOf(String str)",此方法可以使一个字符串类型的变量变成一个Lamp类型
的对象(其中Lamp是枚举类型),可是我查遍了API的Enum类及其父类也没有找到此方法啊?难道此方法是凭空产生的?
除此之外还有一个很大的疑惑,按照此程序的要求,每一个灯都有且只有一个对象,就算此方法存在,但它是如何保证还是返回原来的那个灯呢?
其中部分代码如下:
public enum Lamp {
S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),
N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false),
S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true);
private Lamp(String opposite,String next,boolean lighted){
this.opposite = opposite;
this.next = next;
this.lighted = lighted;
}
private boolean lighted;
private String opposite;
private String next;
public boolean isLighted(){
return lighted;
}
public void light(){
this.lighted = true;
if(opposite != null){
Lamp.valueOf(opposite).light();//此方法到底来自何方啊,我怎么查遍API都没有找到啊!而且MyEclipse竟然还识别?
}
System.out.println(name() + " lamp is green,下面总共应该有6个方向能看到汽车穿过!");
}
............
} |