未知枚舉的列表值
回答
getEnumConstants()的類對象的方法返回的對象的陣列
public static enum E {
A, B, C, D;
}
public static void main(String[] args) {
Class c = E.class;
for(Object b:c.getEnumConstants())
{
System.out.println(b);
}
}
打印:
A
乙
Ç
d
以下主要:
公共類GetEnumFields {
public static enum Enum {
A, B, C, D;
}
public static void main(String[] args) {
Enum a = Enum.A;
Field[] declaredFields = a.getClass().getDeclaredFields();
for (int i = 0; i < declaredFields.length; i++) {
System.out.println(declaredFields[i]);
}
}
}
打印:
public static final GetEnumFields$Enum GetEnumFields$Enum.A
public static final GetEnumFields$Enum GetEnumFields$Enum.B
public static final GetEnumFields$Enum GetEnumFields$Enum.C
public static final GetEnumFields$Enum GetEnumFields$Enum.D
private static final GetEnumFields$Enum[] GetEnumFields$Enum.ENUM$VALUES
您可以使用EnumSet.allOf(Class<E>)
,其中<E extends Enum<E>>
鑑於:
public static enum Alphabet {
A, B, C, D;
}
可以編寫:
for (Enum<?> e : EnumSet.allOf(Alphabet.class)) {
System.out.println(e);
}
// A, B, C, D
我不能沒有訪問字母使用它。假設有Class cls = Alphabet.class,只能用cls工作。 – 2010-08-03 10:38:47
@Joel:繞過泛型類型檢查是非常棘手的(我不認爲如果你以'Class >'開始的話,那麼有一種類型安全的方法),但是我不確定你在說什麼。這絕對有效,但'Class.getEnumConstants()'是最好的。 – polygenelubricants 2010-08-03 10:49:11
感謝您的回答。我看着它,從中吸取教訓,並將其標記爲有用。正如你所建議的,我接受了getEnumConstants()答案。它的主要原因是它不需要Class對象本身。 – 2010-08-03 12:45:46
- 1. Gson忽略未知的枚舉值
- 2. 枚舉類的未知名稱值[
- 3. 枚舉類的未知序數值
- 4. 返回默認枚舉值,當枚舉類型未知
- 5. 未知枚舉常量javax.persistence.CascadeType.DETACH
- 6. 值在枚舉列表中
- 7. 使用列枚舉的LINQ表枚舉
- 8. 未定購Scala枚舉值?
- 9. 警告:未知的枚舉常量Status.STABLE
- 10. 在枚舉中創建枚舉列表,並且不包含值
- 11. 將多個列表枚舉值寫入另一個枚舉
- 12. C#:枚舉值的通用列表
- 13. 排序的枚舉列表由值
- 14. java中的枚舉值列表
- 15. 值枚舉的到陣列
- 16. 對於未知的枚舉值引發什麼樣的異常?
- 17. 自定義枚舉 - 未知類型
- 18. 存儲大小未知:枚舉
- 19. 枚舉錯誤C「未知類型」
- 20. 將「未知枚舉」傳遞給方法
- 21. Ç枚舉:未知類型名稱
- 22. 獲取枚舉值(從.dll)到列表
- 23. IEnumerable列表脫離枚舉值
- 24. 枚舉值作爲下拉列表
- 25. 使用枚舉()的列表
- 26. 枚舉prolog的子列表
- 27. 如何從C#中的未知枚舉中獲取值?
- 28. 休眠異常:枚舉類的未知名稱值
- 29. Hibernate異常:java.lang.IllegalArgumentException:枚舉類的未知名稱值[]
- 30. Java枚舉:列出Class <?中的枚舉值擴展枚舉>
+1;這是最好的答案! – polygenelubricants 2010-08-03 10:28:46