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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯国强 中级黑马   /  2013-11-22 10:37  /  942 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在交通灯管理系统中,通过灯的名称来获取灯实例对象的方法valueof,这怎么解释?

1 个回复

倒序浏览
你说的是通过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.     }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马