zoukankan      html  css  js  c++  java
  • 反射

    首先明白:

    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

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

      

      

  • 相关阅读:
    字符串替换
    字符串查找
    字符串比较
    字节与字符串相互转换
    1365. How Many Numbers Are Smaller Than the Current Number
    1486. XOR Operation in an Array
    1431. Kids With the Greatest Number of Candies
    1470. Shuffle the Array
    1480. Running Sum of 1d Array
    【STM32H7教程】第56章 STM32H7的DMA2D应用之刷色块,位图和Alpha混合
  • 原文地址:https://www.cnblogs.com/dfdi33/p/8953880.html
Copyright © 2011-2022 走看看