黑马程序员技术交流社区

标题: 交通灯管理系统中的一个小问题 [打印本页]

作者: 冯国强    时间: 2013-11-22 10:37
标题: 交通灯管理系统中的一个小问题
在交通灯管理系统中,通过灯的名称来获取灯实例对象的方法valueof,这怎么解释?


作者: freehiker    时间: 2013-11-22 12:07
你说的是通过valueOf将字符串转换为枚举类的操作吧。
这个方法是通过valueOf中的参数返回一个枚举常量,详细的你可以看API中的Enum类中的valueOf方法介绍。
再看该方法的时候,你会注意到有两个参数,第一个是Class的,这个可以不写,通过Eclipse工具的话会多出一个valueOf(String str)的方法,这也是eclipse的智能之处
为什么不写不会出错呢?看一下源代码就知道了
  1.     public static <T extends Enum<T>> T valueOf(Class<T> enumType,
  2.                                                 String name) {
  3.         T result = enumType.enumConstantDirectory().get(name);
  4.         //如果写了enumType,而且再常量目录中存在的话,就直接返回枚举常量了
  5.         if (result != null)
  6.             return result;
  7.         //name要是不写的话就会出现异常
  8.         if (name == null)
  9.             throw new NullPointerException("Name is null");
  10.         throw new IllegalArgumentException(
  11.             "No enum constant " + enumType.getCanonicalName() + "." + name);
  12.     }
复制代码





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