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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lengmianluocha 中级黑马   /  2013-8-15 22:54  /  1284 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 lengmianluocha 于 2013-8-24 21:47 编辑

通过反射有两种方式来创建实例化对象,针对于第二种方式,有代码如下:
  1. Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);

复制代码
代码第一行getConstructor()的参数是StringBuffer.class,在反射中,这不是获取Class对象的一个方式么?为什么很多参数都是这种形式的?

第二行代码要怎么解释呢?
  1. String str = (String)Constructor.newInstance(new Stringbuffer("abc"));
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

3 个回复

正序浏览
Class.forName("java.lang.String")这个是生成String 类的Class对象,而在java反射机制中几乎所有的方法参数都是使用的Class对象 ,如 getConstructor(StringBuffer.class)。
可以这样认为JAVA中的万物均为对象:类,构造方法,普通方法,属性,字段,接口等等,它们在java中都可以对应一个java对象,那么这时同种对象就向上抽出了各种类,像字段类,方法类等,但是具体应用时就要确定这个对象到底对应哪一个方法,这时就需要方法的参数了,而现在采用的是反射机制,所以参数的类型都为*.class对象。
回复 使用道具 举报

不好意思,丢人了。
回复 使用道具 举报
第二行代码呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马