问题描述
Java Enum类的文档说明以下关于 getDeclaringClass
:
The docs for the Java Enum class state the following about getDeclaringClass
:
我不明白 getClass
和 getDeclaringClass
是不同的。有人可以提供一个例子和解释吗?
I don't understand when getClass
and getDeclaringClass
are different. Can someone provide an example along with an explanation?
推荐答案
Java枚举值被允许具有价值特定的类体,例如(我希望这个语法是正确的...)
Java enum values are permitted to have value-specific class bodies, e.g. (and I hope this syntax is correct...)
public enum MyEnum {
A {
void doSomething() { ... }
},
B {
void doSomethingElse() { ... }
};
}
这将生成代表的类体的内部类A
和 B
。这些内部类将是 MyEnum
的子类。
This will generate inner classes representing the class bodies for A
and B
. These inner classes will be subclasses of MyEnum
.
MyEnum.A.getClass()
将返回代表 A
的类主体的匿名类,这可能不是你想要的。
MyEnum.A.getClass()
will return the anonymous class representing A
's class body, which may not be what you want.
MyEnum.A.getDeclaringClass()
将返回代表 Class
MyEnum
。
对于简单的枚举(即没有不变特定类的机构的枚举), getClass()
和 getDeclaringClass()
返回相同的事情。
For simple enums (i.e. ones without constant-specific class bodies), getClass()
and getDeclaringClass()
return the same thing.
这篇关于Java Enum getDeclaringClass与getClass的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!