gpt4 book ai didi

java - getClass() 在 Enum 中使用构造函数时打印二进制格式

转载 作者:行者123 更新时间:2023-11-30 06:02:41 27 4
gpt4 key购买 nike

我正在学习枚举可以为我们提供的各种选项。我在其中了解了构造函数、方法和重写方法。

代码示例如下。

不过我有一个问题。

在本例中,getClass()返回类 enumData.WeekEnumElaborate$1 , enumData.WeekEnumElaborate$2依此类推,直到 enumData.WeekEnumElaborate$8

但是,当枚举是一个简单的枚举,仅声明常量时,getClass()返回enumData.WeekEnumElaborate

请解释一下这个二进制表示法。

这是我定义的枚举。

package enumData;

public enum WeekEnumElaborate {
SUNDAY("SUN") {
public String getDescription() {
return this.getShortForm().concat(" Funday");
}
},
MONDAY("MON") {
public String getDescription() {
return this.getShortForm().concat(" Moot");
}
};

private final String shortForm;

private WeekEnumElaborate(String shortForm) {
this.shortForm = shortForm;
}

public String getShortForm(){
eturn this.shortForm.toLowerCase();
}

public abstract String getDescription();
}

这是我正在测试的一个类。

package enumData;

public class TestWeekEnumElaborate {

public static void main(String[] args) {

WeekEnumElaborate[] days = WeekEnumElaborate.values();

for (WeekEnumElaborate day : days) {
System.out.println(day.name());
System.out.println(day.getClass());
System.out.println(day.getDeclaringClass());
}

}

}

最佳答案

当您为外部枚举类提供不同的枚举行为时,您实际上是在定义一个匿名静态内部类,它是基本枚举类的子类。

这些嵌套类的名称的命名方式与匿名内部类的命名方式相同。即外部类+$+计数器。

这允许每个枚举对同一签名有不同的方法实现。

关于java - getClass() 在 Enum 中使用构造函数时打印二进制格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53924165/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com