黑马程序员技术交流社区

标题: 反射 [打印本页]

作者: 程序爱好者    时间: 2014-5-4 17:15
标题: 反射
本帖最后由 程序爱好者 于 2014-5-5 17:13 编辑

创建实例对象:
        反射方式:String str=(String)constructor.newInstance(new StringBuffter(“abc”)); //这句怎么理解
Class.newInstance()方法:
        例子:String obj=(String)Class.forName(“java.lang.String”).newInstance();//这句又怎么理解
看了张孝祥的视频中提到这两句  不懂怎么理解

作者: ehuashao    时间: 2014-5-4 19:38
  1. String str=(String)constructor.newInstance(new StringBuffter(“abc”));
复制代码

这句代码是通过反射方式调用String类一个有参的构造函数来创建一个String对象。相当于调用String的这个构造函数。
  1. public String(StringBuffer sb){
  2.       XXXXXX
  3. }
复制代码

  1. String obj=(String)Class.forName(“java.lang.String”).newInstance();
复制代码

Class.forName(“java.lang.String”)这句得到String的一份类字节,再通过调用.newInstance()来反射得到一个String对象,注意调用.newInstance()时,没有参数,则相当于调用了String类的这个构造函数。
  1. public String(){
  2.   XXXXXX
  3. }
复制代码


你所写的两句代码创建出来的String对象是不一样的。
作者: 邵景伦    时间: 2014-5-5 15:21
创建实例对象:
        反射方式:String str=(String)constructor.newInstance(new StringBuffter(“abc”)); //这句怎么理解
通过String类的带字符串参数的构造函数创建带参数的String对象,相当于在反射中调用带字符串参数的构造函数

       例子:String obj=(String)Class.forName(“java.lang.String”).newInstance();//这句又怎么理解
通过类名获取字节码文件,调用空参构造函数创建String对象




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