Java枚举变量名称与枚举名称相同

时间:2019-11-19 12:52:08

标签: java enums

谁能解释为什么枚举变量名不能与枚举名相同?如果它是常规类,它将起作用,但由于某种原因,enum无效。 例子不起作用-> someEnumType someEnumType = someEnumType.TYPE1;

1 个答案:

答案 0 :(得分:5)

请参见JLS Sec 6.3(添加了重点)(*):

  

块中的局部变量声明的范围(第14.4节)是该声明在其中出现的其余部分,以其自己的初始化程序开始,并在其中包含右侧的任何其他声明符本地变量声明语句。

someEnumType someEnumType = someEnumType.TYPE1;

Java认为右侧的someEnumType是指尚未明确分配的变量。


(*)此规则的有趣结果之一是这是合法的:

String s = s = "hello!";

(对于那些确实真的真的想要分配变量的情况)。