Java Enum getDeclaringClass 与 getClass
Java Enum 类的文档对 getDeclaringClass 进行了以下说明:
返回对应的Class对象 到此枚举常量的枚举类型。二 枚举常量 e1 和 e2 是 相同的枚举类型当且仅当 e1.getDeclaringClass() == e2.getDeclaringClass()。 (值 此方法返回的结果可能有所不同 从返回的 枚举的 Object.getClass() 方法 具有常量特定类的常量 尸体。)
我不明白 getClass
和 getDeclaringClass
何时不同 有人可以提供一个例子并进行解释吗?
The docs for the Java Enum class state the following about getDeclaringClass
:
Returns the Class object corresponding
to this enum constant's enum type. Two
enum constants e1 and e2 are of the
same enum type if and only if
e1.getDeclaringClass() ==
e2.getDeclaringClass(). (The value
returned by this method may differ
from the one returned by the
Object.getClass() method for enum
constants with constant-specific class
bodies.)
I don't understand when getClass
and getDeclaringClass
are different. Can someone provide an example along with an explanation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Java 枚举值允许具有特定于值的类体,例如(我希望这个语法是正确的...)
这将生成表示
A
和B< 的类体的内部类/代码>。这些内部类将是 MyEnum 的子类。
MyEnum.A.getClass()
将返回代表A
类主体的匿名类,这可能不是您想要的。另一方面,
MyEnum.A.getDeclaringClass()
将返回表示MyEnum
的Class
对象。对于简单的枚举(即没有特定于常量的类体的枚举),
getClass()
和getDeclaringClass()
返回相同的内容。Java enum values are permitted to have value-specific class bodies, e.g. (and I hope this syntax is correct...)
This will generate inner classes representing the class bodies for
A
andB
. These inner classes will be subclasses ofMyEnum
.MyEnum.A.getClass()
will return the anonymous class representingA
's class body, which may not be what you want.MyEnum.A.getDeclaringClass()
, on the other hand, will return theClass
object representingMyEnum
.For simple enums (i.e. ones without constant-specific class bodies),
getClass()
andgetDeclaringClass()
return the same thing.