• 反射


    首先明白:

    1,任何类都是Class的实例对象

    2,new对象是静态加载,在编译时刻就加载 可能 使用的类,可能会出现程序在运行阶段,没有用到Class A,该类编译不通过,那么程序启动会报编译错误。

      在运行时动态加载Class.forName("classPath")能巧妙的避免出现这样的问题。

    3,类类型,即是Class的对象,如String.class(其实是编译后的字节码文件),获取的三种办法:

      a,Class c = String.class;

      b,Class c = 对象.getClass();

      c,Class c = Class.forName("classPath");

    反射:可以在巧妙的躲避编译不通过的问题

      //获取类类型

      Class c = ArrayList.class;

      //获取一个方法,通过方法名称和paramsType...获取

      Method m = c.getMethod("add",String.class);

      //方法反射

      Object o = m.invoke(new ArrayList(),"test");

    例如:java中集合的泛型,泛型只在编译阶段有效,为了防止错误输入。

      ArrayList list = new ArrayList();

      ArrayList<String> list1 = new ArrayList<String>();

      System.out.println(list.getClass() == list1.getClass())   //结果为true

      说明在运行过程泛型是没意义的

      

      

  • 相关阅读:
    学习记录18
    学习记录17
    学习记录16
    小白的心酸连网历程
    学习记录15
    学习记录14
    学习记录13
    学习记录12
    学习记录10
    语法糖
  • 原文地址:https://www.cnblogs.com/dfdi33/p/8953880.html
Copyright © 2020-2023  润新知