调用 new 和 getInstance() 之间的区别

2024-02-20

正在呼叫Class.getInstance()相当于new Class()? 我知道后者调用了构造函数,但是呢getInstance()? 谢谢。


没有这样的方法Class#getInstance()。你可能把它与Class#newInstance() http://java.sun.com/javase/6/docs/api/java/lang/Class.html#newInstance%28%29。是的,这与new on the default构造函数。这是其摘录Javadoc http://java.sun.com/javase/6/docs/api/java/lang/Class.html#newInstance%28%29:

创建由此表示的类的新实例Class目的。该类的实例化就好像由new带有空参数列表的表达式。如果该类尚未初始化,则对该类进行初始化。

In code,

Object instance = Object.class.newInstance();

是相同的

Object instance = new Object();

The Class#newInstance()调用实际上遵循工厂方法 http://en.wikipedia.org/wiki/Factory_method_pattern图案。


Update: 看到其他答案,我发现你的问题有些含糊不清。好吧,有方法的地方actually named getInstance()经常被用来表示抽象工厂 http://en.wikipedia.org/wiki/Abstract_factory_pattern图案。它将“在幕后”使用new or Class#newInstance()创建并返回感兴趣的实例。它只是隐藏您可能不需要了解的具体实现的所有细节。

此外,您还经常在某些(主要是自行开发的)实现中看到此方法名称辛格尔顿 http://en.wikipedia.org/wiki/Singleton_pattern图案。

也可以看看:

  • GoF 设计模式的现实示例。 https://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns/2707195#2707195
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调用 new 和 getInstance() 之间的区别 的相关文章

随机推荐

  • 如何使用摄影测量或 LiDAR 创建 3D 扫描 ios 应用程序?

    我想使用摄影测量或 LiDAR 创建自己的 3D 扫描应用程序 我希望能够精确地扫描小物体 您能指导我从头开始创建这样的应用程序吗 我尝试搜索如何使用统一来做到这一点 但我找不到它 我想要一个能够进行 3D 扫描的 IOS 应用程序 当谈到
  • 如何在 Excel 宏中使用 JavaScript?

    Google 托管了一个非常酷的 diff 类 http code google com p google diff match patch http code google com p google diff match patch 我之
  • JNA 如何在要传递到本机库的结构中填充结构指针字段?

    我需要将 JNA 结构传递到包含结构指针字段 可能包含零个或多个结构 的本机层 这是 父 结构 public class VkRenderPassCreateInfo extends Structure public int attachm
  • 在 Symfony 中,如何在开发环境中要求 http,在生产环境中要求 https?

    在生产中 我有一组需要 SSL 的路由 但这不应该是开发的要求 我以为我可以简单地覆盖我的路线routing dev yml但这似乎不起作用 当导航到任何路线时 它会强制使用 https 我的设置 应用程序 配置 routing dev y
  • 比较器最佳实践

    如果我实现自定义比较器 重写是否被认为是好的做法equals除了compare 此外 是否有一份明确的合同Comparator Comparator合约定义在它的javadoc中 http docs oracle com javase 7
  • 如何替换Python字符串中的占位符

    如果我在Python中有一个这样的字符串 我该如何填充占位符 s uri1 s file1 txt md5 s uri2 s file2 txt md5 s uri3 s file3 txt md5 s The uri然而 将保持不变 md
  • 为什么我无法使用 NodeJS 解密使用 openssl 加密的文件?

    我使用命令行加密了一个文件 openssl aes 256 cbc in tmp text txt out tmp text crypt 然后我尝试使用以下 JavaScript 代码对其进行解密 crypto require crypto
  • Rails 3 在所有表单上去除 before_validation 的空格

    我对 Rails 比较陌生 有点惊讶这不是一种可配置的行为 至少我还没有找到一个 我本以为 99 的表单都会受益于修剪所有表单中的空白string text领域 我猜我错了 无论如何 我正在寻找一种 DRY 方法来从 Rails 3 应用程
  • 使用 Seaborn 和 Matplotlib 对齐热图和线图的共享子图中的 x 轴刻度

    绘制一个热图和线图使用具有共享 x 轴的 Seaborn 热图的刻度被放置在热图条的中间 因此 底部线图将继承热图刻度位置和标签 而不反映真实数据 因为线图刻度应从零开始 换句话说 我需要将两个图的刻度移动到从 x 轴原点开始 最佳 或者将
  • 在子进程中使用信号

    我想创建一个简单的程序 它使用 fork 并创建一个子进程 该子进程使用暂停正在等待 我希望这个子进程在从父进程收到特定信号后启动 我写的代码 include
  • 从第三方网站 POST 后丢失会话数据

    我有一个 Laravel 网站 它重定向到支付提供商 外部第三方网站 当用户完成付款后 他们会通过 POST 请求重定向回我的网站 我遇到的问题是 当用户返回确认页面时 他们的会话会丢失 我想知道这是否是 PHP 的普遍行为 但它似乎是 L
  • Android Studio 3 中的“活动管理器状态”在哪里?

    Android studio 2 x 中有一个非常方便的调试功能 但目前 3 x 中没有 它有点隐藏在用户界面中 然后它会提示详细的活动管理器状态 我知道 我可以通过以下方式获取该输出adb shell dumpsys activity t
  • Google Data Studio:如何计算特定事件的数量

    我知道以前有人问过类似的问题 但我没有找到答案 例子在这里 https support google com datastudio thread 22779471 hl en 另一个例子 https stackoverflow com qu
  • 在 Ubuntu 16.04 上安装 Oracle Datamodeler

    我正在我的 Ubuntu 16 04 工作站上设置 Oracle 开发环境 安装 Oracle 12c 是一个挑战 但有几个非常有用的教程让我走上了正轨 下列的迪兹韦尔的 https www dizwell com wordpress te
  • 从 Outlook 获取收件箱

    我在 Outlook 2010 中配置了两个 Exchange 帐户 但是我无法找到如何访问第二个帐户的收件箱 Session GetDefaultFolder 总是返回第一个 甚至枚举 Session Accounts 找到正确的帐户并调
  • for 循环缺少初始化

    我见过 for and for s 0 s 怎么就这样空白了 谢谢 The for声明的工作原理如下 for initialization test condition update 这三个中的任何一个或全部都可以省略 留空 所以 for
  • Eclipse源代码下载[已关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 在新的 Eclipse 中 我们具有右键单击 XSD 并从中生成 XML 的功能 有人可以指导我在哪里可以获得 Eclipse 此功能的源代码吗 我猜
  • 如何动态更改按钮模板WPF

    我怎样才能改变一个Button模板动态 我有一个ComboBox通过更改他选择的值 我想更改Button Template 这就是我一直在努力做的事情
  • Reactjs - 在悬停时渲染从数组渲染的列表项的单个图标

    我有这种从对象数组渲染的卡片 父组件 foo bar baz name string path string state isHovering false handleMouseHover gt const isHovering this
  • 调用 new 和 getInstance() 之间的区别

    正在呼叫Class getInstance 相当于new Class 我知道后者调用了构造函数 但是呢getInstance 谢谢 没有这样的方法Class getInstance 你可能把它与Class newInstance http