A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© bowen-xiao 中级黑马   /  2015-1-17 16:57  /  1888 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、通过获取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();
该方法直接找到内部默认的构造方法,通过查看底层代码实际上也是通过读取缓存中取到的无参构造方法,如果缓存中没有就写入缓存在后面的调用就直接去缓存中查找。

1 个回复

倒序浏览
看看,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马