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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宗士为 中级黑马   /  2012-5-17 09:09  /  1677 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Constructor c = String.class.getConstructor(new StringBuffer("abc"))
String str = (string)c.newTnstance(new StringBuffer("abc"))
System.out.println(str.charAt(2))

看视频时这段代码看的太晕  好多个构造套着用  
拜求明白人   将每个到每个的步骤说明白点   刚接触反射求简单明了  

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览

Constructor c = String.class.getConstructor(new StringBuffer("abc"));           //  得到String 类中的构造方法   并通过构造方法实例化
String str = (string)c.newTnstance(new StringBuffer("abc"))               //   通过newInstance实例化,因为是Object   所以向下转型为String
System.out.println(str.charAt(2))                                                         
回复 使用道具 举报
不懂就多看API文档···{:soso__6235880048239246314_3:}很有帮助
回复 使用道具 举报
你的错误真多
Constructor c = String.class.getConstructor(StringBuffer.class);  这传的是字节码,目的是获得String类中的那个具体的构造方法,即参数是Stringbuffered类型的构造方法
String str = (String)c.newInstance(new StringBuffer("abc")) ;  String的s要大写  这里是根据上一步获得的构造方法 调用newInstance创建该对象,显然还必须传递      
                                                                                     StringBuffer对象进去,就跟普通创建对象一样,需要传递相应的参数,下面的操作就正常了,不多解释了
  System.out.println(str.charAt(2));

点评

起的挺早啊  发表于 2012-5-17 10:51

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 很给力!

查看全部评分

回复 使用道具 举报
贠(yun)靖 发表于 2012-5-17 10:22
你的错误真多
Constructor c = String.class.getConstructor(StringBuffer.class);  这传的是字节码,目的 ...

我这是看视频 的文档笔记 没有放eclipse里面  就是看不明白才才来求教的   
回复 使用道具 举报
宗士为 发表于 2012-5-17 10:51
我这是看视频 的文档笔记 没有放eclipse里面  就是看不明白才才来求教的     ...

额~~没有那个意思啊,你别误解哦亲~~!
回复 使用道具 举报
贠(yun)靖 发表于 2012-5-17 11:01
额~~没有那个意思啊,你别误解哦亲~~!

不会的亲  就是解释下   下次我记的放eclipse修改下错误   记得别扣我分哈    没分好可怜的
回复 使用道具 举报
张孝祥老师的ppt上说的
反射就是把各个类身上的成分映射成相应的对象。(反射和其他的java类的对象一样)
例如:(大体意思)
java类(有方法,字段,包,注解等)
当你获取方法时要传入,方法参数的类型,当你后得一个方法实例对象时,要进行传如数据,这样方法就可以用了。
汽车类(有发动机,轮胎,方向盘等)
当你获的发动机时,要明确发动机要的油的类型吧(机油还是柴油),把发动机拿出来后,你想用时得给油,这样发动机就转了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马