Java枚举getDeclaringClass与getClass
Java Enum类的文档声明以下内容getDeclaringClass
:
返回与此枚举常量的枚举类型相对应的Class对象。当且仅当e1.getDeclaringClass()==
e2.getDeclaringClass()时,两个枚举常量e1和e2属于相同的枚举类型。(对于具有特定于常量的类主体的枚举常量,此方法返回的值可能不同于Object.getClass()方法返回的值。)
我不了解何时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()
返回同样的事情。
以上是 Java枚举getDeclaringClass与getClass 的全部内容, 来源链接: utcz.com/qa/420601.html