摘要:
在java的反射中,所有的类被抽象出一个类,即Class类,这样我们就可以在程序运行的过程中通过配置文件,动态的加载类。但是在用反射的时候有些前提,就是:当我们调用有参的constructor的时候必须先知道构造函数传入的参数是什么类型;调用Method的时候必须先知道成员函数传入的参数是什么类型;调用field的时候必须先知道成员变量的类型。但是在某些情况下,一个类中的成员属性的名字对外是不可见的,这时候我们只可以得出他的成员类型的数组field[],在不知道确切变量名的情况下不可以定位到确切的变量上。而他提供了对这个属性公开的读(get)、写(set)方法, 虽然方法名和方法操作的对象有时 阅读全文
摘要:
要说java中的反射首先得说说java中的类加载机制。首先java源文件通过编译,生成字节码文件存在硬盘上,虚拟及启动后,根据main函数调用到类的先后顺序动态的加载类到内存,加载有一个原则,首先加载bootstrap classloader:系统类的类加载器;再加载ExtClassLoader:系统中一部分的类加载器;最后是AppClassLoader:应用程序中自己定义的类加载器。三者的关系依次是parentclassloader的关系。因此,在classloader看来,加入内存的类的字节码也是一个个的对象,因此也应该有抽象出来的共性,所以就引出了Class类,Class类是所有字节码类 阅读全文