使用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());
}
}