Java--反射

来源:互联网 发布:linux 文件夹重命名 编辑:程序博客网 时间:2024/06/14 13:56
Java Reflection:
Reflection:是被视为动态语言的关键,反射机制允许程序在执行期间借助ReflectionAPI取得任何类的背部信息,并能直接操作任意的内部属性和方法。
Java反射机制提供的功能:
在运行时是判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时调用任意一个对象的成员变量和方法
生成动态代理

Class类
在Object类中定义了一下的方法,此方法将被所有的子类继承:
public final Class getClass();
以上的方法返回值的类型是一个Class类,此类是Java反射的源头,实际上所谓的反射从程序的运行结果来看也很好理解,即:可以通过对象反射求出类的名称::
正常的顺序: 建一个类 实例化类 得到类的属性和方法
反射实现: 实例化对象 getClass()方法 得到完整的包类的名称


Class 类:
对照镜子后可以得到信息,某个类的属性,方法和构造器。某各类到的实现了那些接口。对于每个接口而言。JRE都为其保留一个不变的class类型的的对象。一个Class对象包含了特定某个类的信息。
class本身也是一个类。
class 对象只能由系统建立对象
一个类在JVM中只会有一个Class实例
一个class对象对应的是一个加载到JVM中的一个.class文件
每个类的实例都会记得自己是由哪个Class实例所生成的。
通过Class可以完整地得到一个类中的完整的结构。
得到class能做的事:
创建类的对象:调用Class对象的newInstance()方法
要求
1.类必须有一个无参的构造器
2.类的构造器的访问权限需要足够
只有在操作的时候明确类中的构造方法,并将参数传递进去之后,才可以实例化操作
1、通过Class类的getDeclarredConstructor(class parameterTye)取得本类的指定形参类型的构造器
2.向构造器的型参中传递一个对象数组进去,里面包含了构造器中做需要各个参数
3.在Constructor类中存在一个方法:
public newInstance(Object ..initarge)

以上是在反射中使用最多地方
原创粉丝点击