一、引言:
在反射原理中,我们常常要使用Class实例获取其对应的构造方法、普通方法、成员属性、注解。我们会发现他们的获取方法比较多,下面我们对它们的用法说明进行了一些整理。
二、用法整理:
类型 | 获取全部 | 获取指定 |
Method | getMethods() 获取本类及超类的所有公共方法 返回一个包含Method对象的数组,这些对象反映了此 Class对象表示的类或接口的所有公共方法,包括由类或接口声明的对象以及从超类和超接口继承的对象。
getDeclaredMethods() 获取本类的所有方法 返回一个包含Method对象的数组,这些对象反映此 Class对象表示的类或接口的所有已声明方法,包括公共,受保护,默认(程序包)访问和私有方法,但不包括继承的方法。 | getMethod(String name, Class<?>... parameterTypes) 获取本类指定的公共成员方法 返回一个Method对象,该对象反映此Class对象表示的类或接口的指定公共成员方法 。
getDeclaredMethod(String name, Class<?>... parameterTypes) 获取本类的成员方法 返回一个Method对象,该对象反映此Class对象表示的类或接口的指定声明方法 。 |
Constructor | getConstructors() 获取本类的所有公共构造函数 返回一个包含Constructor对象的数组,这些对象反映了此Class对象表示的类的所有公共构造 函数。
getDeclaredConstructors() 获取本类的所有构造函数 返回一个Constructor对象数组,该对象反映此Class对象表示的类声明的所有构造 函数。 | getConstructor(Class<?>... parameterTypes) 获取本类指定公共构造函数 返回一个Constructor对象,该对象反映此Class 对象表示的类的指定公共构造函数。
getDeclaredConstructor(Class<?>... parameterTypes) 获取本类的指定构造函数 返回一个Constructor对象,该对象反映此Class对象表示的类或接口的指定构造 函数。 |
Field | getFields() 获取本类的所有公共字段 返回一个包含Field对象的数组,这些对象反映了此Class对象表示的类或接口的所有可访问公共字段。
getDeclaredFields() 获取本类的所有字段 返回一个Field对象数组,该对象反映此Class对象表示的类或接口声明的所有字段 。 | getField(String name) 获取本类的指定公共字段 返回一个Field对象,该对象反映此Class 对象表示的类或接口的指定公共成员字段。
getDeclaredField(String name) 获取本类的指定字段 返回一个Field对象,该对象反映此Class 对象表示的类或接口的指定声明字段。 |
三、归类总结
我们不难发现它们分为以下四类:
- getXXX();获取指定公共对象
- getXXXs();获取所有公共对象
- getDeclaredXXX();获取指定对象(公共、私有、受保护、默认都可以)
- getDeclaredXXXs();获取所有对象(公共、私有、受保护、默认都可以)
四、注意事项:
除了获取方法时getXXXs();可以获取到超类的方法,其他都是获取到本类的方法。