throws x extends Exception 方法签名
阅读可选
的JavaDoc,我碰到了一个奇怪的方法签名;我这辈子从未见过:
public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)
throws X extends Throwable
乍一看,我想知道通用异常是如何可能的,因为你不能这样做(这里和这里)。经过再三考虑,这开始变得有意义,因为它只是为了绑定...但是供应商本身在泛型之前确切地知道它应该是什么类型。<X extends Throwable>
Supplier
但第二行击中了我:
-
throws X
是完全泛型异常类型。
然后:
-
X extends Throwable
,这到底是什么意思?-
X
已绑定在方法签名中。
-
- 这是否会以任何方式解决通用异常限制?
- 为什么不只是 ,因为其余的将被类型擦除?
throws Throwable
还有一个,没有直接相关的问题:
- 是否要求将此方法捕获为 或按提供的 类型捕获;因为它无法在运行时进行检查?
catch(Throwable t)
Supplier