java反射
一、概念:java反射机制:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象。反射就是把java类中的各种成分映射成一个个的java对象。【通俗点:正常的:知道这个类->就可以通过创建对象来调用类中的方法和属性。反射:通过已知对象,获取到相应的类,进而调用该类的其它:方法和成员。】
二、反射机制获取类的三种方法:
1)直接通过类名.class的方式得到:clazz = person.class;#clazz其实就是我们所获得的类,只是为了与java的class不冲突而叫这个而已。
2)通过对象的getClass()方法获取,这个使用的少(一般是不知道什么类型的时候才用):Object obj = new Person();clazz = obj.getClass();
3)通过全类名获取,用的比较多,但可能抛出classNotFoundExcetion异常:clazz = Class.forName("com.java.reflection.person");
备注:
1)利用Class类的newInstance()方法创建类对象时,调用的类必须要有无参的构造器。
2)类加载器:classLoad是用来把class装载进jvm的,JVM规范定义了两种类型的类装载器:启动类装载器bootstrap和用户自定义装载器user-defined class loader。