黑马程序员技术交流社区

标题: 关于交通灯的问题 [打印本页]

作者: 陈国柱    时间: 2013-9-12 10:32
标题: 关于交通灯的问题
本帖最后由 陈国柱 于 2013-9-12 11:35 编辑

Lamp.valuesof(opposite).isLight(),将opposite这个字符串变量传进去就可以调用灯方法,为什么这样也可以的?我查API里面类和枚举那里都好像没有这样的方法的?

作者: xscn    时间: 2013-9-12 10:58
枚举都自动包含两个预定义方法:values()和valueOf()
就是说定义一个enum 的类型,编译器会自动生成一个继承 java.lang.Enum的类,并且生成 values()和 valueOf()方法
public static enum-type[ ] values( )
public static enum-type valueOf(String str)返回值类型是enum-type,自然能调用isLight()方法

API中描述的是static <T extends Enum<T>> T   valueOf(Class<T> enumType, String name)
                    返回带指定名称的指定枚举类型的枚举常量。
所以你写成Lamp.valueOf(Lamp.class, opposite).light();也是可以的,但不如上面的简便不是吗?

作者: 陈国柱    时间: 2013-9-12 11:33
xscn 发表于 2013-9-12 10:58
枚举都自动包含两个预定义方法:values()和valueOf()
就是说定义一个enum 的类型,编译器会自动生成一个继 ...

谢谢,原来是这样的,怪不得我找API都没有找到对应的信息。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2