与REST API的使用得到枚举值,我有以下设置:无法从类
public enum Ready {
YES,
NO;
}
public class Top {
public Ready readyField;
}
而且其中几个:
public class Bottom extends Top {
... some fields
}
现在,我做一个过滤器扩展Top类的类。因此,我使用Reflection来尝试获取字段值,如果筛选器失败,则实例不会返回。
一个这样的过滤器可以是对“readyField”。因此我们假设我的网址如下所示:“http ... /?isReady = no”。
我的代码如下所示:
Field field = Bottom.class.getField("readyField");
Class<?> type = field.getType();
if (type.isEnum()) {
Object object = field.get(Bottom.class);
if (!object.toString().equalsIgnoreCase(value)) {
resultList.remove(instance);
continue;
}
}
值字段是“无”,从URL字符串。
这将引发execption:
java.lang.IllegalArgumentException异常:无法就绪场 Top.readyField设置为java.lang.Class中
而且我很为难。我在Google上找到的所有东西都与获取枚举类本身的枚举值有关。尝试使用该枚举比较类中分配的枚举字段的字符串值无关。
我已经得到了我所需要的对象实例。我需要的是在类中获取枚举的值,并将其与给定的字符串进行比较。
编辑:
的解决方案,它的出现,是不是使用Bottom.class,但对于GET()函数表示类的实际实例。
这是公认的答案说什么,但措辞有点怪我。
对于全自动'枚举就绪{是,否};'。否则,也许'Enum.valueOf(type,string.toUpperCase())'是你的东西。我不完全确定你在concreto中想要什么。 – 2014-10-09 15:50:48
@JoopEggen我想要的是查看URL中给予我的字符串是否与设置为对象实例的枚举值相对应。 – KdgDev 2014-10-09 18:48:39