Java 枚举:列出 Class 中的枚举值扩展枚举>
我已经获得了枚举的类对象(我有一个 Class
),并且我需要获取此枚举表示的枚举值的列表。 values
静态函数具有我需要的功能,但我不确定如何从类对象访问它。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我已经获得了枚举的类对象(我有一个 Class
),并且我需要获取此枚举表示的枚举值的列表。 values
静态函数具有我需要的功能,但我不确定如何从类对象访问它。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
Class.getEnumConstants
Class.getEnumConstants
如果您知道所需值的名称:
如果您不知道,您可以通过以下方式获取它们的数组(正如汤姆首先所做的那样):
If you know the name of the value you need:
If you don't, you can get an array of them by (as Tom got to first):
我很惊讶地看到
EnumSet#allOf()
没有提到:考虑以下
enum
:只需像这样调用该方法:
当然,这返回一个
Set
,而不是List
,但这应该足够了在许多(大多数?)用例中。或者,如果您有一个未知的
枚举
:与
Class#getEnumConstants()
的特点是,它的类型是这样的,因此不可能传递除 < 之外的任何内容。 code>enum 到它。例如,下面的代码是有效的并返回null
:虽然这不会编译:
I am suprised to see that
EnumSet#allOf()
is not mentioned:Consider the following
enum
:Simply call the method like this:
Of course, this returns a
Set
, not aList
, but it should be enough in many (most?) use cases.Or, if you have an unknown
enum
:The advantage of this method, compared to
Class#getEnumConstants()
, is that it is typed so that it is not possible to pass anything other than anenum
to it. For example, the below code is valid and returnsnull
:While this won't compile:
使用反射就像调用Class#getEnumConstants():
using reflection is simple as calling Class#getEnumConstants():