反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。(自审)
例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。
这个功能特定我们不常看到,但是在其他的比如C或者C++语言中根本就就存在这个特性。
-----------------------------------------------------------------------------------
类--->jvm--->new 对象
类 public Class String{}
类对象 String.class 单例 一般加载进内存不销毁 jvm虚拟机分配内存
类的对象 String str=new String(); String str1=null;
-----------------------------------------------------------------------------------
所有用Declared修饰的可以获取到本类中即便是private修饰的成员,
非Declared修饰的虽然只能直接获取public修饰的成员,但可以获取到其父类的成员:
public Field getDeclaredField(String name) 获取任意指定名字的成员
public Field[] getDeclaredFields() 获取所有的成员变量
public Field getField(String name) 获取任意public成员变量
public Field[] getFields() 获取所有的public成员变量
getModifiers():获取属性修饰符
getType():获取属性类型
getName():获取属性名
---------------------------------------------------------------------------------
public Method[] getMethods() 获取所有的共有方法的集合
public Method getMethod(String name,Class... parameterTypes) 获取指定公有方法 参数1:方法名 参数2:参数类型集合
public Method[] getDeclaredMethods() 获取所有的方法
public Method getDeclaredMethod(String name,Class<?>... parameterTypes) 获取任意指定方法
getModifiers():获取方法修饰符
getReturnType():获取方法类型
getName():获取方法名
getParameterCount() 获取方法参数个数
getParameters() 获取方法参数
getExceptionTypes() 获取方法异常
-------------------------------------------------------------------------------------
public Constructor<?>[] getConstructors() 返回类中所有的public构造器集合,默认构造器的下标为0
public Constructor<T> getConstructor(Class<?>... parameterTypes) 返回指定public构造器,参数为构造器参数类型集合
public Constructor<?>[] getDeclaredConstructors() 返回类中所有的构造器,包括私有
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) 返回任意指定的构造器