执行赋值时,"enum"类型的最终变量不会产生错误



所以我正在清理代码,并将final关键字添加到任何可能的位置,其中一个位置恰好是enum类型的未初始化变量。

变量未初始化,因为其值需要由switch语句确定。在这种情况下,使这个变量final是没有意义的,但我这样做无论如何都是偶然的,我发现代码运行良好,不会产生任何错误。

据我所知,Java中未初始化的变量将包含默认值(在本例中,我认为应该是null(,并且最终变量不能重新分配给其他对象。


为什么这个代码不会产生任何错误或副作用

注意:

  • NeighborPosition是枚举类型
final NeighborPosition edgePosition;
switch(cornerPosition) {
case ONE:
edgePosition = NeighborPosition.THREE;
break;
case TWO:
edgePosition = NeighborPosition.FOUR;
break;
case THREE:
edgePosition = NeighborPosition.FIVE;
break;
case FOUR:
edgePosition = NeighborPosition.SIX;
break;
case FIVE:
edgePosition = NeighborPosition.ONE;
break;
case SIX:
edgePosition = NeighborPosition.TWO;
break;
case ZERO:
default: {
throw new IllegalStateException(
"Should never reach this corner, current corner: "
+ cornerPosition);
}
}

默认情况下,局部变量不初始化,只有字段初始化。

在所有可能的情况下,您的代码要么为edgePosition赋值,要么抛出异常(在这种情况下,局部变量超出范围(。

相关内容

  • 没有找到相关文章

最新更新