今天是一个好日子! 让我们来学习学习反射!
————————————————————————————————————————————————
什么是反射?
反射可以实现的功能:
(1) 无需事先知道类名,也不用new,就可以创建对象
(2) 在两个不同类型的对象间复制值 Emp->CEO
(3) 在运行时动态创建一个新的类型,不需要.java也不需要编译为.class
反射的定义:
反射:在程序运行时创建、修改、探知一个类的结构
比喻:通过照镜子可以得知真人的特征
JDK提供的反射相关的类:
元数据:MetaData,描述数据的数据
元类:MetaClass,用于描述一个类的类——反射相关的类
(1) java.lang.Class: 用于描述一个Java中的类——Java中的类本身也是一个实例,是一个Class类型的实例
(2) java.lang.Package:用于描述一个Java中的包
(3) java.lang.reflect.Modifier:用于描述一个类修饰符
(4) java.lang.reflect.Field: 用于描述一个类中的字段
(5) java.lang.reflect.Constructor:用于描述一个类中的构造方法
(6) java.lang.reflect.Method: 用于描述一个中的方法
Class c1 = Class.forName(“类的完全限定名”) 作用:
从文件系统中根据指定的名称,加载指定的.class文件到JVM的内存中,扫描该字节码的结构,得到该类型的详细定义,返回该类型所对应的Class对象——简而言之,就是通过一个字符串,加载一个类描述信息。
使用反射结构对象:
使用反射创建类的对象无需使用new关键字。
1.得到类的描述对象
<span style="font-size:14px;color:#000000;">Class c = Class.forName("类的完全限定名");</span>
2.通过类的描述对象创建新实例
<span style="font-size:14px;color:#000000;">Object instance = c.newInstance( );
</span>
通常,调用对象方法的思路是:
实例.方法名(实参);
使用反射调用对象方法的思路:
1、获取类分描述对象
2、构建类的实例
3、通过类描述对象,获取方法描述对象
4、通过方法描述对象的invoke()方法调用此方法,指定调用实例。
-------------------------------------------------------------------------------------------------------
希望我的总结对大家有帮助! 谢谢!