• java基础---反射机制


    资料
     

     
    ===概念
    java反射机制是说在程序的运行过程中,对于任意一个类或者对象,都能够知道它的所有属性和方法和构造方法,能够创建新的对象;这种动态获取属性或者调用方法的功能叫做java反射机制。
     
    对于反射来说,最重要的就是Class类,这是一种用来描述类的类。java中的每一个类都会有一个Class实例对象,用来封装这个类的信息,包括属性,接口,方法,构造函数等等。要使用反射的话都要先获取这个Class对象。
     
    ===Class对象什么时候创建的呢?被保存在虚拟机什么位置呢?
    在类加载器加载的时候创建Class对象,保存在虚拟机的方法区中。
     
    ===创建Class类实例对象的方法有三种
    1.通过类获取;Person.class
    2.通过类的全限定名创建 Class.forName(com.java.Person);类加载器会做加载
    3.通过对象获取,getClass()来创建。
    4.获取当前线程的classloader来加载。
     
     
    ===使用Class.forName和直接通过类名获取Class对象引用有什么区别呢?
    首先他们都会获取到Class对象引用,但是使用.class不会做初始化,使用Class.forName会做初始化。
    类加载三个步骤:加载连接初始化。
    实际上进行了三步操作:
    1.虚拟机的类加载器加载了.class文件,首先查找并且导入Class对象
    2.验证类中的字节码,为静态变量分配了内存空间,创建了对其他类的所有引用
    3.进行初始化,进行静态初始化和静态初始化块。
     
     
    ===获取到Class类实例对象之后就能够调用他的一些方法,比如说最常见的就是newInstance()方法来创建一个对象,或者通过getMethod方法获取方法类对象,再调用invoke来执行方法。
    Class cla = Person.class;
    Object xiaoming = cla.newInstance();
     
    ===框架中如何使用反射呢?
    框架中大量使用到反射机制,能够使得程序更加灵活。
    举一个例子,比如说创建一个类Person,如果没有反射,那么你必须new 一个Person对象。这个时候如果person类需要修改,那么就要停下整个应用进行修改编译再运行。但是使用反射就不需要了,你只要修改配置文件就行,通过配置文件获取到对象的Class对象,然后通过Class对象的newInstance()方法来创建实例。    
     
  • 相关阅读:
    单词接龙
    字符串,字符数组
    马的遍历
    约瑟夫问题
    扫雷游戏
    寻找道路
    传纸条
    数的划分
    火柴棒等式
    火星人
  • 原文地址:https://www.cnblogs.com/buptyuhanwen/p/9412067.html
Copyright © 2020-2023  润新知