1、什么是反射?
从概念上来说,AVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
概念看起来很笼统,有的人看了还是云里雾里的,简单来说,反射就是把Java类中的各种成分映射出Class对象,例如一个类有成员变量、方法、构造方法、包等信息,利用反射技术可以把各个组成部分映射出Class对象,从Class中获得类的信息。例如学生对象的信息保存在Student类中,类对象的相关信息保存在Class类中,Class类会提供获取这些信息的方法,在java中,每个类都会有对应的Class,想要执行反射操作,必须要先获取指定类名的Class。
2.得到Class对象的三种方式
(1).Object类的getClass()方法,可用来判断两个对象是否是同一个字节码文件,
(2).静态属性class,
(3).Class类中静态方法forName()。
还是以Student类举例说明:
Student st = new Student();//方式一 Class c1 = st.getClass(); //方式二 Class c2 = Student.class; //方式三Class c3 = Class.forName("com.demo.Student");
3.Class对象是什么时候生成的?
这需要了解类的加载过程,我们编写的.java文件编译.class文件,类加载器会把.class文件中的数据加载到内存中,并为之创建一个Class对象。
4.反射的简单实践
编写一个类
通过反射获取类的相关信息
通过实践发现,通过反射很容易就得到了类的相关信息,在实际开发中,反射往往跟注解结合使用,下一篇文章将举例说明反射在注解开发中的使用。