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

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

      

      

  • 相关阅读:
    html5结构标签
    video标签、audio标签
    a标签、img图片、iframe、表单元素、div
    pre,html转义,abbr缩写,表格table
    html 列表标签
    p,br,hn,b,i,u,s,sup,sub标签
    网站开发准备学习
    交互原型设计工具
    为什么要重写hashCode()方法和equals()方法及如何重写
    Java接口回调
  • 原文地址:https://www.cnblogs.com/dfdi33/p/8953880.html
Copyright © 2011-2022 走看看