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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗全涛 黑马帝   /  2012-1-5 09:55  /  2815 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗全涛 于 2012-1-5 10:27 编辑

Class实例调用newInstance()可以获得一个类的实例,那为什么又要
定义获取构造函数的方法,再用构造函数newInstance来获取实例?

评分

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

查看全部评分

4 个回复

倒序浏览
newInstance 是一个工厂方法,内部可能有一些特殊处理,比如单例。
不是每个类都提供了对应的 newInstance 的
你这个问题可以引申为newInstance()和new的区别,相见:http://www.examw.com/java/jichu/152799/

评分

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

查看全部评分

回复 使用道具 举报
Class.newInstance调用的而是类的不带参数的构造方法
而new 可以用类的其它构造方法。

评分

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

查看全部评分

回复 使用道具 举报
韩金蕊 发表于 2012-1-5 10:24
Class.newInstance调用的而是类的不带参数的构造方法
而new 可以用类的其它构造方法。 ...

恩,谢谢了。弄懂了
回复 使用道具 举报
newInstance()方法使用类加载机制,new关键创建一个新类
它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类
比如来说类内部可能有各种机制,不能直接new。使用newInstance()方法来创建对象时
就必须保证这个类已经加载
另外,new和newInstance()二者的效率,和忢c无参数构造函数等方面也不一样

评分

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

查看全部评分

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