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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蒋先 黑马帝   /  2011-10-18 20:45  /  2730 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Class里的newInstance()和构造方法Constructor里的newInstance都是创建实例对象,有什么关系?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

3 个回复

倒序浏览
Class里的newInstance()创建实例对象时,只能使用无参数的构造方法创建实例对象;
Constructor里的newInstance()创建实例对象时,可以调用任意参数的构造方法(也包括无参数的构造方法)创建实例对象

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
叶涛 黑马帝 2011-10-18 21:41:38
藤椅
通过反射创建新的类示例,有两种方式:
Class.newInstance()
Constructor.newInstance()


以下对两种调用方式给以比较说明:
Class.newInstance() 只能够调用无参的构造函数,即默认的构造函数;
Constructor.newInstance() 可以根据传入的参数,调用任意构造构造函数。

Class.newInstance() 抛出所有由被调用构造函数抛出的异常。

Class.newInstance() 要求被调用的构造函数是可见的,也即必须是public类型的;
Constructor.newInstance() 在特定的情况下,可以调用私有的构造函数。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
class里面newInstance()调用是你目标类的无参构造函数。而Constructor里面的newInstance()可以根据你目标类的构造方法的重载方法来自由选择;就是说你可以调用有参的也可以调用无参的。不过要麻烦一点。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马