3
4

2 回答 2

1
于 2017-12-04T02:58:55.233 回答
1

这是因为类型?是不变的,并且Object不是 . 范围内所有类型的子类型?

我相信 Java 8 类型推断能够推断出RHSTDouble的内容,但是由于您在 LHS 上显式分配给 a GenericTools<?>,因此捕获是一个无界类型变量,它与T也没有边界的无界变量统一。

没有任何界限, 和的T签名中的 不能保证是相同的类型——请记住,类型变量是不变的,因为没有表示协变或反变的界限。侧面的擦除只是,并且编译器无法插入运行时检查是否实际上是运行时类型(因为无法具体化!)。因此:无法隐式转换类型,编译失败。Supplier::getConsumer::acceptTSupplierObject??Object?

于 2017-12-04T03:14:31.583 回答