反射其实就是程序在运行时 可以调用其构造方法 属性 方法,形成java动态语言。
有几种方法比较重要 经常使用 可以记一下:
Class类对应的基本信息
String getName() | 以字符类型返回该类型的名称 |
String getSimpleName() | 获取当前类型的简称(类名) |
String getPackage() | 返回当前类所在的包 |
String getSuperClass(); | 获取当前父类名称和包 |
Class[] getInteerfaces() | 获取当前类实现的多个接口 |
int getModifiers() | 返回当前类的访问修饰符号 |
getDeclaredClasses() [] | 当前内部类中的实例 |
getDeclaredClass() | 当前外部类的实例 |
Constructor 对应的方法
getConstructor(Class...params) | 获取指定单个类中的构造方法 如果是有参构造则 在此方法参数上添加 String.class,int.class 拥有访问等级 |
getConstructors() | 获取所有为public的构造方法 拥有访问等级 |
getDeclaredConstructor(Class.params) | 获取指定单个参数的构造函数 并不论访问等级 |
getDeclaredConstructors | 获取所有的构造方法 并不论访问等级 |
Field 对应的方法
getField(String name) | 获取指定单个类中属性 拥有访问等级 |
getFields() | 获取所有为public的构造属性 拥有访问等级 |
getDeclaredField(String name) | 获取指定单个参数的属性 并不论访问等级 |
getDeclaredFields() | 获取所有的属性 并不论访问等级 |
Method 对应的方法
getMethod (String name,Class...params) | 获取指定单个类中方法 拥有访问等级 |
getgetMethods() | 获取所有为public的方法 拥有访问等级 |
getDeclaredgetMethod(String name,Class...params) | 获取指定单个参数的方法 并不论访问等级 |
getDeclaredgetMethods() | 获取所有的方法 并不论访问等级 |
Class访问类的属性 以下方法都在以上四个 类的组成部分中通过以上对象.出以下方法
xxx getXXX(Object) | 获取 指定对象的实例, |
get(Ojbect) | 获取 指定对中的值 |
set(Object,String name) | 设置 指定属性的值 |
xxx setXXX(Object) | 设置指定类中元素 |
setAccessible | 给予访问权限,但是只限制与declared方法使用 |
1. Method类中包含一个invoke()方法
2. 通过invoke()方法,Method实例可以调用java类的实例方法和静态方法
Object invoke(Object obj ,Object args)
obj是执行该方法的对象,表示的就是实例(对象)
args是执行时候带入的参数
调用者就是方法,表示obj调用这个方法带入arge参数
若Method是静态方法,则obj可以为null
args也可以是null