A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈国柱 中级黑马   /  2013-9-12 10:32  /  803 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈国柱 于 2013-9-12 11:35 编辑

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

2 个回复

倒序浏览
枚举都自动包含两个预定义方法: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();也是可以的,但不如上面的简便不是吗?

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
xscn 发表于 2013-9-12 10:58
枚举都自动包含两个预定义方法:values()和valueOf()
就是说定义一个enum 的类型,编译器会自动生成一个继 ...

谢谢,原来是这样的,怪不得我找API都没有找到对应的信息。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马