與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