Java Enum类的文档声明如下getDeclaringClass:
返回与此枚举常量的枚举类型对应的Class对象.当且仅当e1.getDeclaringClass()== e2.getDeclaringClass()时,两个枚举常量e1和e2具有相同的枚举类型.(此方法返回的值可能与Object.getClass()方法返回的值不同,对于具有常量特定类主体的枚举常量.)
我不明白何时getClass和getDeclaringClass不同.有人可以提供一个例子和解释吗?
ska*_*man 52
允许Java枚举值具有特定于值的类主体,例如(我希望这种语法是正确的......)
public enum MyEnum {
A {
void doSomething() { ... }
},
B {
void doSomethingElse() { ... }
};
}
Run Code Online (Sandbox Code Playgroud)
这将产生代表类机构的内部类A和B.这些内部类将是子类MyEnum.
MyEnum.A.getClass()将返回表示A类体的匿名类,这可能不是您想要的.
MyEnum.A.getDeclaringClass()另一方面,将返回Class表示的对象MyEnum.
对于简单的枚举(即没有常量特定类主体的枚举),getClass()并getDeclaringClass()返回相同的东西.
| 归档时间: |
|
| 查看次数: |
8733 次 |
| 最近记录: |