反射6

来源:互联网 发布:入门单板吉他推荐 知乎 编辑:程序博客网 时间:2024/06/05 20:30

使用newinstance()创建对象

这种方式要求该Class对象的对应类有默认构造方法,而执行newInstance()方

法时实际上是利用默认构造方法来创建该类的实例

使用Constructor对象创建对象

要先使用Class对象获取指定的Constuctor对象,再调用Constructor对象的

newInstance()方法来创建该Class对象对应的实例。通过这种方式可以选择

使用某个类的指定构造方法来创建实例。通过反射创建对象时性能要稍微低

一些

invoke

Object invoke(Object obj,Object...args);

该方法中的obj是执行该方法的对象,后面的args是执行该方法时传入该方

法的参数

调用私有方法

setAccessible(Boolean flag)

将Method对象的accessible标志设置为指示的布尔值,值为true则表示该

Method在使用时应该取消java语言访问权限检查。值为false表示该Method

在使用时应该实施Java语言访问权限检查。


得到属性值

getXxx(Object obj);

获取obj对象该属性的属性值,其中参数obj为该属性所在的对象。此处的Xxx

对应8个基本类型,如果该属性的类型是引用类型则取消get后面的Xxx.

为属性赋值

setXxx(Object obj,Xxx val);

将obj对象的该属性设置成val值。此处的Xxx对应8个基本类型,如果该属性的

类型是引用类型则取消set后面的Xxx.


Array 创建数组

static Object newInstance(Class componentType,int...length)

创建一个具有指定的元素类型、指定维度的新数组。

返回元素

static xxx getXxx(Object array,int index);

返回array数组中第index。其中xxx是各种基本数据类型,如果数组元素是

引用类型,则去掉XXX,方法变为static  get(Object array,int index);

为数组元素赋值

static void setXxx(Object array,int index,xxx val);

将array数组中第index元素的值设为val。其中xxx是各种基本数据类型,

如果数组元素是

引用类型,则去掉XXX,方法变为

static void set(Object array,int index,xxx val);


import java.util.Date;public class NewInstanceDemo {public static void main(String[] args) throws InstantiationException, IllegalAccessException {Class c = Date.class;Date d = (Date)c.newInstance();System.out.println(d.toString());}}




0 0