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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2011-10-4 00:03  /  1744 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

黑马网友  发表于 2011-10-4 09:18:04
楼主
Constructor类的newInstance方法创建对象的过程:得到类的字节码即class- 得到构造方法constructor-new object;Class类的newInstance方法创建对象的过程:得到class-new object,比用Constructor类的newInstance方法要直接、简便。Class类的newInstance方法内部先得到默认的构造方法(就是不带参数的那个构造方法),然后用该构造方法创建实例对象。该方法内部的具体代码用到了缓存机制来保存默认构造方法的实例对象。
回复 使用道具 举报
Class中的newInstance()是默认的调用了空参数列表的的构造方法。

而通过Class这个方法 public Constructor<T> getConstructor(Class<?>... parameterTypes)
可以得到该类里面任何参数的构造方法。
就像张老师讲的   你每天找我给你去买可乐不如我自己多买点可乐卖给你得了,可是突然有天你想和果汁或者牛奶了还是得用后者的。

感觉自己说的很肤浅了 。不知道是不是你想要的
[ 本帖最后由 tintick 于 2011-10-04  09:40 编辑 ]
回复 使用道具 举报
黑马网友  发表于 2011-10-4 10:02:16
藤椅
Class中的newinstance()该方法内部先得到默认的构造函数,然后用该构造方法创建实例对象。该方法内部的具体代码用到了缓存机制来保存默认构造方法的实例对象。
Constructor类的Constructor的方法 newInstance(Object...initargs)功能//可变参数
newInstance方法是根据构造函数来生成对象
其中initargs就是你这个对象的构造函数的参数,如果构造函数是无参的,就一个也不要传,这个列表和构造函数的参数列表时一样的,只不过,当是基本数据类型传入的时候,需要一个包装类来包装它,但是jdk1.5也可以直接传入基本数据类型了,因为编译器会帮你自动装箱,拆箱
回复 使用道具 举报
黑马网友  发表于 2011-10-4 10:37:04
板凳
Class类的newInstance方法内部先得到默认的构造方法,想用不带参数构造方法可以用这个,然后用该构造方法创建实例对象,该方法内部的具体代码用到了缓存机制来保存默认构造方法的实例对象。
Constructor类的newInstance方法创建对象的过程:先得到类的字节码即, 然后得到构造方法创建实例对象。
回复 使用道具 举报
黑马网友  发表于 2011-10-4 16:00:18
报纸
Class里面的newInstance():
创建此 Class 对象所表示的类的一个新实例。如同用一个带有一个空参数列表的 new 表达式实例化该类。如果该类尚未初始化,则初始化这个类。

constructor里面的newInstance():
使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。个别参数会自动解包,以匹配基本形参,必要时,基本参数和引用参数都要进行方法调用转换。
如果底层构造方法所需形参数为 0,则所提供的 initargs 数组的长度可能为 0 或 null。
如果构造方法的声明类是非静态上下文的内部类,则构造方法的第一个参数需要是封闭实例
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马