gpt4 book ai didi

java - 为什么 Java 需要 EnumClass.VALUE 而不仅仅是 VALUE?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:52 24 4
gpt4 key购买 nike

如果你有一个 Java enum 和一个枚举类型的变量,如下所示:

public enum Something
{
VAL1,
VAL2,
VAL3
}

public Something varName;

为什么需要写 varName = Something.VAL1; 而不是简单的 varName = VAL1;?编译器不应该从 varName 的类型知道它只能接受 null, VAL1, VAL2,和 VAL3 作为值?

最佳答案

= 语句的右侧是一个表达式,它被一般地解析。无论如何,为了展示它对编译器来说有多复杂,请考虑以下内容:

public enum Something { VAL1, VAL2, VAL3 }

Something VAL3 = Something.VAL1;

Something a = VAL3;

应该为 a 分配 VAL1 还是 VAL3

唯一不需要枚举名称的情况是在 switch 语句中,因为 case 语句必须使用有效的枚举值,因此枚举名称是不必要的。

switch (a) {
case VAL1:
// do something
break;
case VAL2:
// do something
break;
case VAL3:
// do something
break;
}

关于java - 为什么 Java 需要 EnumClass.VALUE 而不仅仅是 VALUE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32106821/

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