本文介绍了Java Enum getDeclaringClass与getClass的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 05:18