- 反射主要对象
- Class
- Constructor
- Field
- Method
- API-Class
- 获取Class对象
Object.getClass()
className.class
Class.forName()
-
Class.getComponentType()
获得数组对象的元素类型
- 获取Class信息
-
getDeclaredClasses()
返回在类中定义的公共、私有、保护的内部类和接口。但不包括继承的内部类和接口 -
getClasses()
返回在类中定义的公共的内部类和接口,以及从父类、父接口那里继承来的内部类和接口 -
getClassLoader()
返回加载此类的类加载器 -
getConstructors()
返回public构造器 -
getDeclaredConstructors()
返回所有构造器 -
getFields()
获取所有public成员变量 -
getDeclaredFields()
获取所有成员变量 -
getDeclaredMethods()
获取此类所有的public方法,包括继承 -
getDeclaredMethods()
获取在此类中定义的所有方法(public, private), 但不包括继承的方法
- 产生对象
-
newInstance()
只能使用无参构造器
- API-Field
- 获取类的成员变量信息(包括类变量和实例变量)
3. 获取变量名field.getName()
4. 获取变量类型field.getType()
5. 获取变量的参数类型,针对泛型field.getGenericType()
6. 获取变量修饰符field.getModifiers()
含义见Modifier类
7. 获取变量所在的类field.getDeclaringClass()
- 读写成员变量的值
- 读取成员变量的值
// public
field.get(foo)
// private
field.setAccessible(true)
field.get(foo)
- 修改成员变量的值
field.set(foo, "123")
// private
field.setAccessible(true)
field.set(foo, "123")
- API-Method
- 获取方法信息
method.getName()
- ...
- 反射调用方法
method.invoke()
- API-Constructor
-
newInstance()
生成对象,可以使用带参构造器