【问题标题】:Can you explain to me this second way of instanciating an object in java? [duplicate]你能解释一下在java中实例化对象的第二种方法吗? [复制]
【发布时间】:2016-04-20 12:20:44
【问题描述】:

我最近开始学习 java,其中有一部分让我感到困惑,我需要帮助。

据我所知,实例化一个 java 对象是这样的语法

String s1 = new String("This is a string");

但是问题是最近我遇到了这样声明的东西

NumberFormat numF = NumberFormat.getNumberInstance(locale);

谁能给我解释一下

【问题讨论】:

  • 这里没什么好解释的。读取getNumberInstancedocumentation,返回一个NumberFormat对象。
  • 这称为静态工厂方法。查看 Effective Java 2nd Ed 第 1 条了解详细说明。

标签: java


【解决方案1】:

NumberFormat 是一个抽象类,因此,您不能以“正常方式”实例化它。

因此,它提供了一个静态方法getNumberInstance,这样你就可以得到一个“通用数字格式”。

在您的代码中,您使用相同的方法来获取NumberFormat 的实例

还有,这个:

NumberFormat numF = NumberFormat.getNumberInstance(locale);

和调用这个是一样的:

NumberFormat numF = NumberFormat.getInstance(locale);

【讨论】:

  • 没有“因此”提供静态工厂方法——很多抽象类没有。我建议你删除那个词。
  • @AndyTurner 是的,他们不想提供自己的通用实例。
  • @AndyTurner 因此真的是一个糟糕的词选择吗?我认为它是“出于这个原因”或“所以”的同义词;不是“如果这样,那么总是”
猜你喜欢
  • 2020-12-23
  • 1970-01-01
  • 2013-06-20
  • 2011-09-22
  • 2010-09-15
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
相关资源
最近更新 更多