黑马程序员技术交流社区

标题: 反射视屏看的超迷糊 有段代码求解 [打印本页]

作者: 宗士为    时间: 2012-5-17 09:09
标题: 反射视屏看的超迷糊 有段代码求解
Constructor c = String.class.getConstructor(new StringBuffer("abc"))
String str = (string)c.newTnstance(new StringBuffer("abc"))
System.out.println(str.charAt(2))

看视频时这段代码看的太晕  好多个构造套着用  
拜求明白人   将每个到每个的步骤说明白点   刚接触反射求简单明了  
作者: Fc10232    时间: 2012-5-17 09:34

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))                                                         
作者: Fc10232    时间: 2012-5-17 09:36
不懂就多看API文档···{:soso__6235880048239246314_3:}很有帮助
作者: 贠(yun)靖    时间: 2012-5-17 10:22
你的错误真多
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
贠(yun)靖 发表于 2012-5-17 10:22
你的错误真多
Constructor c = String.class.getConstructor(StringBuffer.class);  这传的是字节码,目的 ...

我这是看视频 的文档笔记 没有放eclipse里面  就是看不明白才才来求教的   
作者: 贠(yun)靖    时间: 2012-5-17 11:01
宗士为 发表于 2012-5-17 10:51
我这是看视频 的文档笔记 没有放eclipse里面  就是看不明白才才来求教的     ...

额~~没有那个意思啊,你别误解哦亲~~!
作者: 宗士为    时间: 2012-5-17 11:05
贠(yun)靖 发表于 2012-5-17 11:01
额~~没有那个意思啊,你别误解哦亲~~!

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




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