黑马程序员技术交流社区
标题:
反射实例化对象的几种方法
[打印本页]
作者:
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