|
1
27
在扩展方法具有参数化参数的参数化类型时,编译器可以创建桥接方法。 你可以在这节课上找到 BridgeMethodResolver 一种获取“桥方法”引用的实际方法的方法。 见 Create Frame, Synchronize, Transfer Control : 作为这种情况的一个例子,考虑声明:
现在,给出一个调用
正在调用的实际方法的擦除,
只有程序发出未经检查的警告时,才会出现这种情况。( §5.1.9 ) 实现可以通过创建桥接方法来加强这些语义。在上面的示例中,将在类D中创建以下Bridge方法:
这是由Java虚拟机响应调用而实际调用的方法。
也见 Bridge : 如评论中所述,桥梁方法也需要 协变覆盖 :
通常,一种方法
|
|
|
2
3
这里所示的例子(引用自JLS)听起来就像桥梁方法只在使用原始类型的情况下使用。由于情况并非如此,我想我将介绍一个示例,其中使用桥接方法来完全正确地输入泛型代码。 考虑以下接口和功能:
如果按以下方式使用此代码,将使用Bridge方法:
擦除后,
因此,当使用方法创建匿名类时
有趣的是,只有当类实现了
其他
与签名的接口
即使我有以下代码:
编译器仍然发出对
实际上还有另一种方法可以让编译器调用
|
|
|
3
0
我偶然发现的另一个案例与仿制药无关:
|
|
|
Jace Johnson · 我应该使用多个地图功能还是只使用一个 2 年前 |
|
|
Pop Bob · Api返回UnsupportedMediaType 2 年前 |
|
|
Mr FoX · 如何从mysqli输出json数组,而[重复] 2 年前 |