社区
Eclipse
帖子详情
new与newInstance的区别是什么?
nemo天地
2008-05-21 12:34:21
new与newInstance的区别是什么?下面的s1与s2相同吗?为什么?
Student s1=new Student("zili",30);
Student s2=Student.newInstance("zili", 30);
...全文
347
5
打赏
收藏
new与newInstance的区别是什么?
new与newInstance的区别是什么?下面的s1与s2相同吗?为什么? Student s1=new Student("zili",30); Student s2=Student.newInstance("zili", 30);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunhuihuihaohaoxuexi
2008-11-22
打赏
举报
回复
这个我刚刚也不会,谢谢各位大侠啦····
无敌小奇
2008-05-21
打赏
举报
回复
在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,最主要有什么区别?它们的 区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用 等软件设计思想。
Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。 例如:
class c = Class.forName(“Example”);
factory = (ExampleInterface)c.newInstance();
其中ExampleInterface是Example的接口,可以写成如下形式:
String className = "Example";
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
进一步可以写成如下形式:
String className = readfromXMlConfig; //从xml 配置文件中获得字符串
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类 Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。
从 JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类 已经加载; 2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载java API的那个加载器。
现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法 加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。
最后用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。
M_song
2008-05-21
打赏
举报
回复
1,newInstantce()是方法,而new是关键字;
2,newInstantce()采用类加载机制创建对象,而new关键字是创建一个新类;
Shine_Panda
2008-05-21
打赏
举报
回复
下面的s1与s2相同吗?为什么?
这里要看你有每有重写Student的equals方法 . 如果 你重写了 用s1.equals(s2)就为true .
但 s1,和s2是两个不同的对象(如果你没有做单例处理).
老紫竹
2008-05-21
打赏
举报
回复
newInstance 是一个工厂方法,内部可能有一些特殊处理,比如单例。
不是每个类都提供了对应的 newInstance 的
new 是最简单的构造一个类的实例的方法。
new
Instance
()方法和
new
关键字
生成一个实例的时候,
new
Instance
()方法和
new
关键字除了一个是方法,一个是关键字外,最主要有什么
区别
?
new
instance
()和
new
有什么
区别
?
用
new
Instance
与用
new
是
区别
的,
区别
在于创建对象的方式不一样,前者是使用类加载机制,那么为什么会有两种创建对象方式?这个就要从可伸缩、可扩展,可重用等软件思想上解释了。 Java中工厂模式经常使用
new
Instance
...
CA/TA可信安全应用开发
SHA1 sha224 sha256 sha384 sha512等 - 消息认证码 HMAC - TEE侧获取时间的函数有哪些(TEE_GetSystemTime、TEE_GetREETime),有什么
区别
?分别是怎样使用的? - 如何获取随机数(TEE_GenerateRandom)? - TA...
new
Instance
() 和
new
有什么
区别
?
总结一下
new
Instance
() 和
new
有什么
区别
? 1,创建对象的方式不一样,前者是使用类加载机制 ,后者是创建一个新类.
new
Instance
( )是一个方法,而
new
是一个关键字 2,
new
创建一个类的时候,这个类可以...
说说
new
Instance
和
new
有什么
区别
new
Instance
是实用类的加载机制,创建类是这个类必须已经加载过且已经连接。
new
是直接创建一个类,创建类是不需要这个类加载过。 从JVM上理解:
new
Instance
实际上是把
new
这个方式分解为两步,即,首先调用class的...
Eclipse
58,454
社区成员
49,450
社区内容
发帖
与我相关
我的任务
Eclipse
Java Eclipse
复制链接
扫一扫
分享
社区描述
Java Eclipse
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章