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

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

      

      

  • 相关阅读:
    白话插件框架原理
    C# 可扩展编程MEF学习
    C#依赖注入实例
    迷你版AOP框架
    AOP 面向切面编程
    C++ 面向对象
    c++ 的异常处理
    C++ 模板 template
    c 二维数组动态分配和释放
    C++ 指针二维数组, C++二维指针数组笔记
  • 原文地址:https://www.cnblogs.com/dfdi33/p/8953880.html
Copyright © 2011-2022 走看看