检查类是否为 java.lang.Enum

发布于 2024-10-02 21:33:14 字数 292 浏览 6 评论 0原文

我想知道一个类是否是一个枚举,但我认为我遗漏了一些东西:

if (test.MyEnum.class instanceof Enum<?>.class)
 obj = resultWrapper.getEnum(i, test.MyEnum.class);
else 
 obj = resultWrapper.getObject(i);

它给了我一个错误,说 Enum.class 无效。那么我如何检查一个类是否是枚举呢?我很确定可以确定这一点,但我只是无法得到它。

谢谢

I'm trying to know if a class is an Enum, but I think I'm missing something:

if (test.MyEnum.class instanceof Enum<?>.class)
 obj = resultWrapper.getEnum(i, test.MyEnum.class);
else 
 obj = resultWrapper.getObject(i);

It gives me an error saying that Enum.class is not valid. So how I can check if a class is a Enum? I'm pretty sure it is possible to determine that, I'm just unable to get it.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

后来的我们 2024-10-09 21:33:14

正确的语法是:

Enum.class.isAssignableFrom(test.MyEnum.class)

但对于枚举,这里有一个更方便的方法:

if (someObject.getClass().isEnum()))

更新:对于具有主体的枚举项(例如覆盖方法),这实际上不起作用。
在这种情况下,请使用

if (someObject instanceof Enum<?>)

参考:

The correct syntax would be:

Enum.class.isAssignableFrom(test.MyEnum.class)

but for enums, here is a more convenient method:

if (someObject.getClass().isEnum()))

Update: for enum items with a body (e. g. that override methods), this won't actually work.
In that case, use

if (someObject instanceof Enum<?>)

Reference:

听闻余生 2024-10-09 21:33:14

如果您正在谈论 Java 5 新功能 - enum (实际上它并不是很新),那么这就是要走的路:

if (obj.getClass().isEnum()) {

...
}

如果 Enum 是您的自定义类,那么只需检查 obj instanceof Enum 即可。

If you're talking about Java 5 new feature - enum (it's not very new actually), then this is the way to go:

if (obj.getClass().isEnum()) {

...
}

If Enum is your custom class, then just check that obj instanceof Enum.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文