SIr*_*lot 14 java abstract-class
呼叫Class.getInstance()等同于new Class()?我知道后者需要构造函数,但是怎么getInstance()办?谢谢.
Bal*_*usC 24
没有这样的方法Class#getInstance().你可能会混淆它Class#newInstance().是的,这new与默认构造函数完全相同.这是它的Javadoc的摘录:
创建此
Class对象表示的类的新实例.该类被实例化,就像new具有空参数列表的表达式一样.如果尚未初始化,则初始化该类.
在代码中,
Object instance = Object.class.newInstance();
Run Code Online (Sandbox Code Playgroud)
是相同的
Object instance = new Object();
Run Code Online (Sandbox Code Playgroud)
该Class#newInstance()调用实际上遵循Factory Method模式.
更新:看到其他答案,我意识到你的问题有些含糊不清.好吧,使用实际命名方法的地方getInstance()通常表示抽象工厂模式.它将"在引擎盖下"使用new或Class#newInstance()创建并返回感兴趣的实例.它只是隐藏了您可能不需要了解的具体实现的所有细节.
此外,您还会在Singleton模式的某些(主要是自行开发的)实现中看到此方法名称.
小智 5
绝对(通常)不是.
getInstance是Java中Singleton Pattern常用的静态方法.该new 关键字实际上创建了一个新的对象.在某些时候,必须有一个new(尽管有一些其他方法来实例化新对象)来实际创建getInstance返回的对象.
| 归档时间: |
|
| 查看次数: |
44984 次 |
| 最近记录: |