反射
动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制
Java反射相关的类主要包括
- Class 类型
- Constructor 构造方法
- Method 方法
- Field 属性
Class类
Class类中的主要方法:
- getMethod:返回类中某一个方法的实例
- getMethods: 返回类中所有方法的实例
- getField:返回类中某一个属性的实例
- getFields:返回类中所有属性的实例
- getConstructor:返回类中的一个构造方法的实例
获得Class类实例的常用方法有如下三个
- Object类中的getClass方法(对象)
- 类名.class(类名必须是常量)
- Class类的静态方法forName(String name)(类名可以是变量)
Constructor类
- getName:返回构造方法的名字
- getParameterTypes:返回构造方法的参数类型
- newInstance(Object... initargs) :创建实例
Constructor实例都是通过Class类的方法获得
- Constructor<T> getConstructor(Class... parameterTypes) :通过指定参数类型,返回构造方法实例。
- Constructor[] getConstructors() :返回该类的所有构造方法实例
Method类
- getReturnType:获得方法返回值类型
- getName:获得方法名字
- getParameterTypes:获得方法参数类型
- invoke(Object obj, Object... args) :使用obj调用该方法,参数为args
Method实例都是通过Class类的方法获得
- Method getMethod(String name, Class... parameterTypes) :通过指定方法名,参数类型,返回一个Method实例
- Method[] getMethods() :返回该类中所有方法的Method实例
Field类
- getName:返回属性的名字
- getXXX:例如,getFloat返回该属性float类型的值
- setXXX:例如,setFloat为属性赋值float类型的值
获得Field实例,都是通过Class中的方法实现
- public Field getField(String name)
- 通过指定Field名字,返回Field实例
- 注意Field的访问权限