Java反射 操作Constructor、Method、Field

前面已经介绍,通过反射获取Class中各种元素

链接:Java反射 获取Class及Class对应信息

看之前一定要看链接里获取Class对应信息,因为有很多混淆的获取方法

本篇是简单介绍通过

Constructor(构造器)创建对象

Method(方法)调用方法

Field(字段)操作成员变量

Array(数组)类动态创建、操作数组

一.Constructor创建对象

创建对象很简单

获取到Class clazz对象之后

通过clazz.getConstructor(Class<?>...parameterTypes) 获取Constructor对象

调用Constructor对象的newInstance()即可获得该类的实例

1.注意如果是指定参数的构造器指定参数的Class传入即可

2.私有化的构造器无法访问的情况下,可以调用Constructor对象的setAccessible(true)  表示取消访问权限检查

二.Method调用方法

获取clazz之后

通过clazz.getMethod(String methodName,Class<?>...parameterTypes) 获取指定的Method对象

Method对象包含一个 Object invoke(Object obj,Object... args)方法

其中第一个obj 表示具体调用该方法的对象  的实例 

第二个args表示具体调用该方法需要传的实际参数

注意:私有化方法的问题按照  Constructor的处理办法一样即可 

三.Field操作成员变量

通过clazz.getField(String fieldName)获取指定的Field对象

Field有两组方法操作成员变量

1.Xxx getXxx(Object obj)  Xxx表示八种基本数据类型   / Object get() 表示不指定类型 返回Object对象

obj 表示从哪个对象来获取字段的值

2.setXxx(Object obj,Xxx value) Xxx同样表示基本数据类型   / set(Object obj,Object value) 表示不指定value类型

猜你喜欢

转载自blog.csdn.net/u012309392/article/details/83718904