【问题标题】:How can I find out what enums are defined by a class?如何找出一个类定义了哪些枚举?
【发布时间】:2010-09-16 19:14:47
【问题描述】:

我知道我可以通过执行以下操作来获取类的公共静态成员:

obj.getClass().getFields()

但这并没有让我得到枚举。我希望能够从 getClass 方法返回的 Class 对象中获取它们。有什么想法吗?

【问题讨论】:

    标签: java


    【解决方案1】:

    (变成了一个社区 wiki,因为它看起来有相当大的扩展空间,例如包括 tackline 的 cmets。当每个人都可以扩展它时,仅仅转录 cmets 对我来说毫无意义。)

    您是指嵌套在顶级类中的枚举吗?如果是这样,请使用@987654321@ 并遍历结果,查看是否有任何嵌套类是枚举。测试每个嵌套类的最简单方法是使用@987654322@;如果你想遍历枚举中的值,那么@987654323@ 是要走的路。

    【讨论】:

    • 备注一下,你可以根据需要使用getClasses()或者getDeclaredClasses()。
    • @Alexander:我怀疑 getDeclaredClasses() 几乎总是要走的路,所以我编辑了答案。
    • 我撤回了我的答案,因为这个答案现在更笼统,对我来说听起来是一种非常明智的方法。 :-)
    • 如果它是一个专门的枚举常量,你需要getSuperclass
    • 公共枚举 En { X() { public String toString() { return ""; } } ;静态 { System.err.println(X.getClass().getEnumConstants()); } }
    【解决方案2】:

    obj.getClass().getEnumConstants()

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2011-08-20
    • 2010-09-11
    相关资源
    最近更新 更多