Java Enum类的文档说明了以下关于getDeclaringClass
的信息:
返回对应的Class对象到此枚举常量的枚举类型。两个枚举常量e1和e2属于相同的enum类型当且仅当e1.getDeclaringClass () = =e2.getDeclaringClass()。(价值此方法返回的值可能不同从返回的那个枚举的Object.getClass()方法带有特定于常量类的常量尸体。)
我不明白getClass
和getDeclaringClass
什么时候不同。谁能举个例子解释一下?
Java枚举值允许有特定于值的类体,例如(我希望这个语法是正确的…)
public enum MyEnum {
A {
void doSomething() { ... }
},
B {
void doSomethingElse() { ... }
};
}
这将生成代表A
和B
类体的内部类。这些内部类将是MyEnum
的子类。
MyEnum.A.getClass()
将返回代表A
类体的匿名类,这可能不是您想要的。
MyEnum.A.getDeclaringClass()
将返回代表MyEnum
的Class
对象。
对于简单的枚举(即没有特定于常量的类体),getClass()
和getDeclaringClass()
返回相同的东西。