谁能解释为什么枚举变量名不能与枚举名相同?如果它是常规类,它将起作用,但由于某种原因,enum无效。
例子不起作用->
someEnumType someEnumType = someEnumType.TYPE1;
答案 0 :(得分:5)
请参见JLS Sec 6.3(添加了重点)(*):
块中的局部变量声明的范围(第14.4节)是该声明在其中出现的其余部分,以其自己的初始化程序开始,并在其中包含右侧的任何其他声明符本地变量声明语句。
在
someEnumType someEnumType = someEnumType.TYPE1;
Java认为右侧的someEnumType
是指尚未明确分配的变量。
(*)此规则的有趣结果之一是这是合法的:
String s = s = "hello!";
(对于那些确实真的真的想要分配变量的情况)。