黑马程序员技术交流社区
标题:
交通灯管理系统中的一个小问题
[打印本页]
作者:
冯国强
时间:
2013-11-22 10:37
标题:
交通灯管理系统中的一个小问题
在交通灯管理系统中,通过灯的名称来获取灯实例对象的方法valueof,这怎么解释?
作者:
freehiker
时间:
2013-11-22 12:07
你说的是通过valueOf将字符串转换为枚举类的操作吧。
这个方法是通过valueOf中的参数返回一个枚举常量,详细的你可以看API中的Enum类中的valueOf方法介绍。
再看该方法的时候,你会注意到有两个参数,第一个是Class的,这个可以不写,通过Eclipse工具的话会多出一个valueOf(String str)的方法,这也是eclipse的智能之处
为什么不写不会出错呢?看一下源代码就知道了
public static <T extends Enum<T>> T valueOf(Class<T> enumType,
String name) {
T result = enumType.enumConstantDirectory().get(name);
//如果写了enumType,而且再常量目录中存在的话,就直接返回枚举常量了
if (result != null)
return result;
//name要是不写的话就会出现异常
if (name == null)
throw new NullPointerException("Name is null");
throw new IllegalArgumentException(
"No enum constant " + enumType.getCanonicalName() + "." + name);
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2