Java Enum类的文档声明了有关getDeclaringClass的以下内容:



我不了解getClassgetDeclaringClass何时不同。有人可以提供示例和说明吗?

最佳答案

Java枚举值允许具有特定于值的类主体,例如(我希望这种语法是正确的...)

public enum MyEnum {

   A {
       void doSomething() { ... }
   },


   B {
       void doSomethingElse() { ... }
   };
}

这将生成表示AB的类主体的内部类。这些内部类将是MyEnum的子类。
MyEnum.A.getClass()将返回表示A的类主体的匿名类,这可能不是您想要的。

另一方面,MyEnum.A.getDeclaringClass()将返回表示ClassMyEnum对象。

对于简单的枚举(即没有特定于常量的类体的枚举),getClass()getDeclaringClass()返回相同的内容。

08-05 17:39