本帖最后由 还记得梦想吗 于 2014-2-18 01:06 编辑
自己复习试着自己敲一遍交通灯管理项目,其中有两个方法不是很理解。
枚举自己的方法一个是name()一个是toString 查Api
两个方法 很相近
public final String name()返回此枚举常量的名称,在其枚举声明中对其进行声明。 与此方法相比,大多数程序员应该优先考虑使用 toString() 方法,因为 toString 方法返回更加用户友好的名称。该方法主要设计用于特殊情形,其正确性取决于获得正确的名称,其名称不会随版本的改变而改变。
返回: 枚举常量的名称
toStringpublic String toString()返回枚举常量的名称,它包含在声明中。可以重写此方法,虽然一般来说没有必要。当存在更加“程序员友好的”字符串形式时,应该使用枚举类型重写此方法。
覆盖: 类 Object 中的 toString返回: 枚举常量的名称为什么张老师在程序中用name()而不用toString??
public void light(){
//使这个灯变量亮
this.lighted = true;
//让其对应的灯也变亮
if(opposite!=null){
//设置一个灯为其对应的灯opposite 并使其变亮
Lamp lampOpposite = Lamp.valueOf(opposite);
lampOpposite.light();
}
System.out.println(name() + "lamp is green,这条道路个对应的路线可以通行,还有四条不变一直能通行的");
}
valueOf 上面写传2个参数,为什么老师之传了一个参数???public static <T extends Enum<T>> T valueOf(Class<T> enumType,String name)返回带指定名称的指定枚举类型的枚举常量。名称必须与在此类型中声明枚举常量所用的标识符完全匹配。(不允许使用额外的空白字符。)
参数: enumType - 要从中返回常量的枚举类型的 Class 对象 name - 要返回的常量名称 返回: 带指定名称的指定枚举类型的枚举常量 抛出: IllegalArgumentException - 如果指定枚举类型不包含指定名称的常量,或者指定类对象不表示枚举类型 NullPointerException - 如果 enumType 或 name 为空 从以下版本开始: 1.5
|