【发布时间】:2022-07-21 17:42:12
【问题描述】:
例如,我试图了解 enum 在 Java 中的工作原理
public class CardSuitTest{
public static void main(String[] args) {
CardSuit suit = CardSuit.HEART;
System.out.println(suit);
}
}
enum CardSuit{
HEARTS,
DIAMONDS,
CLUBS,
SPADES,
}
我对一些理解感到困惑..!
-
CardSuit中定义的枚举常量(HEARTS、DIAMOND 等)的类型是什么?这些是特定的枚举type吗? -
如果常量是枚举类型,
System.prinltn(CardSuit.HEART)怎么会打印 "HEART" 的文字字符串?所有枚举常量都是字符串类型吗?对这部分更困惑 -
当我喜欢 CardSuit.valueOf(“HEARTS”) 时,但它试图做什么?它只是想创建一个名为
HEARTS的enum type常量吗?
【问题讨论】:
-
1.类型 =
CardSuit2. 它调用默认的toString()方法,就像每个对象一样,对于枚举,它返回name(),这反过来又是例如HEARTS。 3. 枚举是单例实例。CardSuit.valueOf(“HEARTS”)基本上迭代枚举CardSuit的定义值并返回与名称匹配的实例 -
1.它们是
CardSuit类型,扩展Enum<CardSuit>2. 将对象转换为String涉及toString方法。枚举有一个name()方法,它返回常量的名称。猜猜默认的toString实现返回什么? 3. 它不是创建它,它只是返回具有匹配name()的枚举常量。 -
参考Oracle的Java教程:Enum Types