黑马程序员技术交流社区

标题: 反射实例化对象的几种方法 [打印本页]

作者: bowen-xiao    时间: 2015-1-17 16:57
标题: 反射实例化对象的几种方法
一、通过获取Construstor可以获取到具体的某个构造方法,getConstrustor(obj...)方法后面的参数为可变参数,根据参数得到具体的某个需要的构造函数。
Construstor  constustor =Class.forName("java.lang.String").getConstrustor(StringBuffer.class);
创建实例:
通常写法:String str = new String(new StringBuffer("abc"));
反射写法:String str = (String)constustor.newlnstance(new StringBuffer("abc"));
//调用此方法时构造方法后面的参数类型须与获取到的一致
//str = (String)constustor.newlnstance("abc");这个写法没有语法问题,但在运行过程中会报错(前后参数类型不一致的错误)。
二、Class.newlnstance();
案例String str = Class.forName("java.lang.String").newlnstance();
该方法直接找到内部默认的构造方法,通过查看底层代码实际上也是通过读取缓存中取到的无参构造方法,如果缓存中没有就写入缓存在后面的调用就直接去缓存中查找。
作者: phil    时间: 2015-1-17 19:43
看看,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2