1
关于定义
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
2
关于应用场景
在Java程序中许多对象在运行是都会出现两种类型:编译时类型和运行时类型。
编译时的类型由声明对象时实用的类型来决定,运行时的类型由实际赋值给对象的类型决定
3
关于类型类
类型类指的是代表一个类型的类
一般情况下,getclass()方法和class()方法是等价的,都可以获得一个类型名
区别:
两者最直接的区别就是,getClass()是一个类的实例所具备的方法,而class()方法是一个类的方法。
另外getClass()是在运行时才确定的,而class()方法是在编译时就确定了
4
Class:类型类
类型类指的是代表一个类型的类
一般情况下,getclass()方法和class()方法是等价的,都可以获得一个类型名
区别:
两者最直接的区别就是,getClass()是一个类的实例所具备的方法,而class()方法是一个类的方法。
另外getClass()是在运行时才确定的,而class()方法是在编译时就确定了
5
关于方法
getDeclaredField(name)/获取指定私有name的属性
getField(name)/获取指定name的属性
getName()/获取类属性名称[String name]->[name]
getType()/获取类属性类型[String name]->[java.lang.String]
Field.setAccessible(field[], true);/设置所有的私有属性可访问/忽略java检查
field.setAccessible( true);/设置指定的私有属性忽略java检查
getFields()/获取所有属性
getDeclaredMethods()/取得obj类中自己定义的方法, 包括私有的方法
getMethods()/取得obj类中自己定义的方法及继承过来的方法, 但私有方法得不到
6
关于accessibleobject
7
关于PropertyDescriptor:
8
关于demo:
如下连接[demo,需要下载]:实现了一个操作前后不同的对比,通过java反射实现:
https://download.csdn.net/download/zjc_jia/10311056