黑马程序员技术交流社区
标题:
反射中实例化的问题。
[打印本页]
作者:
lengmianluocha
时间:
2013-8-15 22:54
标题:
反射中实例化的问题。
本帖最后由 lengmianluocha 于 2013-8-24 21:47 编辑
通过反射有两种方式来创建实例化对象,针对于第二种方式,有代码如下:
Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);
复制代码
代码第一行getConstructor()的参数是
StringBuffer.class,在反射中,这不是获取Class对象的一个方式么?为什么很多参数都是这种形式的?
第二行代码要怎么解释呢?
String str = (String)Constructor.newInstance(new Stringbuffer("abc"));
复制代码
作者:
神之梦
时间:
2013-8-15 23:52
第二行代码呢?
作者:
lengmianluocha
时间:
2013-8-15 23:57
神之梦 发表于 2013-8-15 23:52
第二行代码呢?
不好意思,丢人了。
作者:
施大勇
时间:
2013-8-18 17:24
Class.forName("java.lang.String")这个是生成String 类的Class对象,而在java反射机制中几乎所有的方法参数都是使用的Class对象 ,如 getConstructor(StringBuffer.class)。
可以这样认为JAVA中的万物均为对象:类,构造方法,普通方法,属性,字段,接口等等,它们在java中都可以对应一个java对象,那么这时同种对象就向上抽出了各种类,像字段类,方法类等,但是具体应用时就要确定这个对象到底对应哪一个方法,这时就需要方法的参数了,而现在采用的是反射机制,所以参数的类型都为*.class对象。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2