我有一个类名称映射到他们的枚举类,我有一个方法解析一个字符串,就像"SomeEnum.FIRST"
实际的对象。但是当地图无法存储时Enum.valueOf
不接受。Class<? extends Enum<?>>
Class<T extends Enum<T>>
对于代码,地图看起来像这样:
private static final HashMap<String, Class<? extends Enum<?>>> enumsMap; static { enumsMap = new HashMap<>(); // These are two DIFFERENT enum classes! registerEnum(SomeEnum.class); registerEnum(AnotherEnum.class); } private static void registerEnum(Class<? extends Enum<?>> enumClass) { enumsMap.put(enumClass.getSimpleName(), enumClass); }
这是解析器(删除不必要的代码):
public <T extends Enum<T>> Object[] parse(List<String> strParameters) { Object[] parameters = new Object[strParameters.size()]; for (int i = 0; i < parameters.length; i++) { String strParameter = strParameters.get(i); int delim = strParameter.lastIndexOf('.'); String className = strParameter.substring(0, delim - 1); String enumName = strParameter.substring(delim + 1); Class<T> enumClass = (Class<T>) enumsMap.get(className); parameters[i] = Enum.valueOf(enumClass, enumName); } return parameters; }
现在,如果我这样称呼parse
,我的IDE(Android Studio)告诉我,“未经检查的方法”解析(List)'调用',并且这是因为该泛型类型。如果我删除它parse
,它将无法编译,但警告消失。周围有好的方法吗?
慕勒3428872
相关分类