Java Enum类的文档声明了有关getDeclaringClass
的以下内容:
我不了解getClass
和getDeclaringClass
何时不同。有人可以提供示例和说明吗?
最佳答案
Java枚举值允许具有特定于值的类主体,例如(我希望这种语法是正确的...)
public enum MyEnum {
A {
void doSomething() { ... }
},
B {
void doSomethingElse() { ... }
};
}
这将生成表示
A
和B
的类主体的内部类。这些内部类将是MyEnum
的子类。MyEnum.A.getClass()
将返回表示A
的类主体的匿名类,这可能不是您想要的。另一方面,
MyEnum.A.getDeclaringClass()
将返回表示Class
的MyEnum
对象。对于简单的枚举(即没有特定于常量的类体的枚举),
getClass()
和getDeclaringClass()
返回相同的内容。