反射常用API
1、类
- Class clazz = getClass()
获得描述类的对象 - clazz.getName()
获得类的名字,包含包名 - clazz.getSimpleName()
获得单独的类名,不包含包名
2、方法
- Method[] m=getMethods()
获得所有的public方法,包括继承的 - Method[] m=clazz.getDeclaredMethods();
获得自身所有的方法 包括私有的 - m.getName()
获得方法的名字 - Parameter[] params=m.getParameters();
3、方法的参数
- Parameter[] param=getParameters()
获得方法的所有参数 - Class type=getType()
获得参数的类型 - paramType.getSimpleName()
获得参数的简易名字 - p.getName()
获得参数的名字 - Class returnType=getReturnType()
获得返回值的类型
4、属性
- Field[] fields=getDeclaredFields()
获得所有的属性,包括私有的 - Field[] fields=getFields()
获得所有public的属性 - f.getName()
获得属性的名字 - Class type=getType()
获得属性的类型
5、调用方法
- Method m=getMethod(方法名字,参数类型.Class…)
获得公共的方法 - Method m=getDeclaredMethod(方法名字,参数类型.Class…)
获得全部的方法 - Invoke(对象,方法的参数…)
调用该方法 - field.setAccessible(true);
获得访问私有成员的权限
6、调用属性
- Field f=getField(属性名)
获得指定名字的属性 - Field f=getDeclaredField(属性名)
- set(对象,值)
给属性赋值 - get(对象)
获得属性的值 - field.setAccessible(true);
获得访问私有成员的权限
7、对象
- Class.forName(字符串)
通过字符串对应的类的描述的对象 - newInstance()
创建一个对象