Java的桥接方法和BridgeMethodResolver使用

Posted jazon@

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的桥接方法和BridgeMethodResolver使用相关的知识,希望对你有一定的参考价值。

什么是桥接方法

桥接方法是JDK1.5引入泛型之后,为了使Java的泛型方法生成的字节码和1.5版本前的字节码相兼容,由编译器自动生成的方法。
对于实现了泛型接口或继承了泛型抽象类的类,如果没有桥接方法,则在编译器对泛型进行擦除后,不符合语义:泛型擦除后,泛型类型成了Object,如果子类没有一个对应的桥接方法(泛型类型成了Object的方法),则认为是不符合语义,且不兼容1.5之前的字节码了。同样子类的返回值如果是父类的返回值的子类型,也需要一个桥接方法。

什么时候生成桥接方法

  • 方法重写的时候子父类返回值不一致

  • 子类重写了父类或接口带有泛型的方法

寻找被桥接方法

利用Spring的工具类BridgeMethodResolver

public static Method findBridgedMethod(Method bridgeMethod);

以上是关于Java的桥接方法和BridgeMethodResolver使用的主要内容,如果未能解决你的问题,请参考以下文章

Java的桥接方法和BridgeMethodResolver使用

Java的桥接方法和BridgeMethodResolver使用

java中桥接模式详解和使用方法

Java桥接方法

Java反射中method.isBridge() 桥接方法

继承关系在编译期做了什么?桥接方法泛型擦除