你说的是通过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);
- }
复制代码 |