我试图做到以下几点:如果我在编译时不知道类,我该如何获得Enum的值?
Class<?> cls = unknownClass;
if(cls.isEnum()){
@SuppressWarnings("unchecked")
Class<? extends Enum<?>> enumClass = (Class<? extends Enum<?>>) cls;
Object val = Enum.valueOf(enumClass, "NAME1");
}
,但我得到了以下错误:
Bound mismatch: The generic method valueOf(Class<T>, String) of type Enum<E> is
not applicable for the arguments (Class<capture#5-of ? extends Enum<?>>, String).
The inferred type capture#5-of ? extends Enum<?> is not a valid substitute for
the bounded parameter <T extends Enum<T>>
谁能告诉我什么,我做错了什么?
这不工作(或者是它只是我的编译器)?:) – dacwe 2011-03-10 16:17:47
@dacwe:它可以在* my *编译器上工作 - 但是您还没有用什么方式说*它不起作用。我将展示一个简短但完整的示例... – 2011-03-10 16:19:19
啊,对不起,它不能编译。 '类> cls = SomeEnum.class; Object val = Enum.valueOf(cls,“NAME1”);'和我得到一个类似于'Bound bound mismatch'的提问者。 – dacwe 2011-03-10 16:21:36