为了账号安全,请及时绑定邮箱和手机立即绑定

Java为什么不允许Throwable的通用子类?

Java为什么不允许Throwable的通用子类?

炎炎设计 2019-12-26 10:01:02
根据Java语言分隔,第3版:如果泛型类是的直接子类或间接子类,则这是编译时错误Throwable。我想理解为什么做出这个决定。通用异常有什么问题?(据我所知,泛型只是编译时的语法糖,Object无论如何它们都将转换为.class文件,因此有效地声明泛型类就好像其中的所有内容都是Object。。如果我错了,请更正我)
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

就像马克说的那样,类型是不可修改的,在以下情况下会出现问题:


try {

   doSomeStuff();

} catch (SomeException<Integer> e) {

   // ignore that

} catch (SomeException<String> e) {

   crashAndBurn()

}

两者SomeException<Integer>和SomeException<String>都被擦除为相同的类型,因此JVM无法区分异常实例,因此也无法确定catch应执行哪个块。


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 475 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信