关于反射

反射的方法比较多,不过都遵循以下规律:

Method表示方法,Field表示成员变量,Constructor表示构造方法;后面加s表示一次获取多个。
因为java中允许有多个同名的方法(普通方法和构造方法),只要其传入参数的类型(包括)不同即可,所以在获取单个方法的时候,不光要指定方法的名称,还要指定参数的类型。

因为类中的成员如果public修饰符,外部不能直接访问,所以有Declared的方法是可以获取到public和非public的成员的。如果没有Declared则表明获取public的。详情如下:

一、getFields()与getDeclaredFields()

getFields()只能访问类中声明为公有的字段,私有的字段它无法访问

getDeclaredFields()能访问类中所有的字段,与public,private,protect无关

二、getMethods()与getDeclaredMethods()

getMethods()只能访问类中声明为公有的方法,私有的方法它无法访问,能访问从其它类继承来的公有方法

getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法

三、getConstructors()与getDeclaredConstructors()

getConstructors()只能访问类中声明为public的构造函数

getDeclaredConstructors()能访问类中所有的构造函数,与public,private,protect无关

更详细关于反射的资料参照:http://www.cnblogs.com/qinbin/archive/2013/01/03/java-reflect.html

原文地址:https://www.cnblogs.com/yejg1212/p/2844678.html