【反射】method.isBridge() 桥接方法
泛型擦除留下的方法
接口
public interface SuperClass<T> {
    void method(T t);
}
实现类
public class ChildClass implements SuperClass<String> {
    @Override
    public void method(String s) {
    System.out.println(s);
  } 
}
泛型是在jdk1.5引入的,为了向前兼容,所以会在编译时去掉泛型(泛型擦除)。SuperClass接口中的method方法的参数在虚拟机中只能是Object。
接口(泛型擦除后)
public interface SuperClass {
    void method(Object  t);
}
实现类(javap -p ChildClass.class 查看编译后的ChildClass )
public class ChildClass implements SuperClass<java.lang.String> {
  public ChildClass();
  public void method(java.lang.String);
  public void method(java.lang.Object);
}
反射调用
 public static void main(String[] args) throws Exception {
        ChildClass obj = new ChildClass ();
        Method method = ChildClass.class.getMethod("method", Object.class);
        System.out.println(method.isBridge()); // true
    }

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号