1 Java反射机制:是指在运行时去获取一个类的变量和方法信息。然后通过获取到的信息来创建对象,调用方法的一种机制。由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展
2 获取Class类的对象
我们要想通过反射去使用一个类,首先我们要获取到该类的字节码文件对象,也就是类型为Class类型的对象
这里我们提供三种方式获取Class类型的对象
l
使用类的
class
属性来获取该类对应的
Class
对象。举例:
Student.class
将会返回
Student
类对应的
Class
对象
l
调用对象的
getClass
()
方法,返回该对象所属类对应的
Class
对象
该方法是Object类中的方法,所有的Java对象都可以调用该方法
l
使用
Class
类中的静态方法
forName
(String
className
)
,该方法需要传入字符串参数,该字符串参数的值是某个类的全路径,也就是完整包名的路径
3 反射获取构造方法并使用
Class类中用于获取构造方法的方法
l
Constructor<?>[]
getConstructors
()
:返回所有公共构造方法对象的数组
l
Constructor<?>[]
getDeclaredConstructors
()
:返回所有构造方法对象的数组
l
Constructor<T>
getConstructor
(Class<?>...
parameterTypes
)
:返回单个公共构造方法对象
l
Constructor<T>
getDeclaredConstructor
(Class<?>...
parameterTypes
)
:返回单个构造方法对象
l
Constructor类中用于创建对象的方法
l
T
newInstance
(Object...
initargs
)
:根据指定的构造方法创建对象
4 反射获取成员变量并使用
Class类中用于获取成员变量的方法
l
Field[]
getFields
()
:返回所有公共成员变量对象的数组
l
Field[]
getDeclaredFields
()
:返回所有成员变量对象的数组
l
Field
getField
(String name)
:返回单个公共成员变量对象
l
Field
getDeclaredField
(String name)
:返回单个成员变量对象
l
Field类中用于给成员变量赋值的方法
l
void set(Object
obj
, Object value)
:给
obj
对象的成员变量赋值为
value
5 反射获取成员方法并使用
Class类中用于获取成员方法的方法
l
Method[]
getMethods
()
:返回所有公共成员方法对象的数组,包括继承的
l
Method[]
getDeclaredMethods
()
:返回所有成员方法对象的数组,不包括继承的
l
Method
getMethod
(String name, Class<?>...
parameterTypes
)
:返回单个公共成员方法对象
l
Method
getDeclaredMethod
(String name, Class<?>...
parameterTypes
)
:返回单个成员方法对象
l
Method类中用于调用成员方法的方法
l
Object invoke(Object
obj
, Object...
args
)
:调用
obj
对象的成员方法,参数是
args
,
返回值是
Object
类型