栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么String switch语句不支持null大小写?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么String switch语句不支持null大小写?

正如damryfbfnetsi 在评论中指出的那样,JLS§14.11具有以下注释:

禁止将其

null
用作开关标签,以防止他人编写永远无法执行的代码。如果
switch
表达式是引用类型,即
String
装箱的原始类型或枚举类型,则如果表达式
null
在运行时求值为,则会发生运行时错误。
根据Java编程语言的设计人员的判断,这比静默跳过整个
switch
语句或选择在
default
标签(如果有的话)之后执行语句(如果有的话)更好。

(强调我的)

虽然最后一句跳过了使用的可能性

case null:
,但这似乎是合理的,并提供了语言设计者意图的观点。

如果我们宁愿看一下实现细节,Christian
Hujer的这篇博客文章就为什么

null
不允许在开关中进行了一些有见地的推测(尽管它集中在
enum
开关而不是
String
开关上):

switch
后台,该语句通常将编译为一个tableswitch字节码。s
的“物理”论证
switch
及其案例
int
。通过调用方法确定要打开的int值
Enum.ordinal()
。序号从零开始。

这意味着映射

null
0
不是一个好主意。第一个枚举值的开关与null不可区分。从1开始计数枚举的序数也许是个好主意。但是,还没有像这样定义它,因此不能更改此定义。

String
开关的实现方式不同时,
enum
开关首先出现,并为引用类型为引用类型时的行为设定了先例
null



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497614.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号