关于异常的抛出

花落的速度 2019-04-13 09:00:23
《Effective Java》里面有这么一段示例代码,代码最后有一句抛出异常。

static <T> List<T> pickTwo(T a, T b, T c) {
switch(rnd.nextInt(3)) {
case 0: return List.of(a, b);
case 1: return List.of(a, c);
case 2: return List.of(b, c);
}
throw new AssertionError();
}


就我看来这一句绝对不可能运行到,于是可以直接去掉。
那么为什么作者要这么写,多此一举还是真的有这种特殊情况?有特殊情况的话可不可以举个好懂一些的例子?
无比感谢,区区一百分不成敬意
...全文
62 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dalianzsl 2019-04-13
  • 打赏
  • 举报
回复
这样写是语法要求,函数pickTwo有返回值,但是不是所有路径都返回,因为switch语句没处理default标签。
天行归来 2019-04-13
  • 打赏
  • 举报
回复
应该是笔误多此一举,rnd.nextInt(3) 值是大于等于0(包含0),小于3(不包含3)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧