zoukankan      html  css  js  c++  java
  • 【反射】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
        }
    
  • 相关阅读:
    ApplicationContext.xml修改
    springmvc.xml约束
    log4j.properties
    SqlMapConfig.xml配置文件
    Mybatis注解式开发坐标
    字符串函数
    vim基础快捷键
    format的使用
    lambda匿名函数
    字典的基础使用
  • 原文地址:https://www.cnblogs.com/itplay/p/13230107.html
Copyright © 2011-2022 走看看