gpt4 book ai didi

java - 为什么我不必实例化 NumberFormat 类的对象?

转载 作者:行者123 更新时间:2023-12-01 22:10:04 24 4
gpt4 key购买 nike

我正在使用 NumberFormat 类。我想我必须做这样的事情:

NumberFormat currency= new NumberFormat();
currency.getCurrencyInstance();

但事实并非如此。连这都做不到吗?相反,我必须执行以下操作:

NumberFormat currency = NumberFormat.getCurrencyInstance();

为什么会这样,有什么区别?

最佳答案

您无法使用 new 实例化 NumberFormat 对象,因为它是一个抽象 类。抽象类仅用于继承,您无法实例化抽象类的对象。

引用自Java Docs

NumberFormat is the abstract base class for all number formats. This class provides the interface for formatting and parsing numbers. NumberFormat also provides methods for determining which locales have number formats, and what their names are.

要根据您的语言环境获取具体格式类对象,您需要使用工厂类方法(这是一种设计模式)。

NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);//French Locale

NumberFormat nf = NumberFormat.getInstance();//Gives you current locale's concrete class object

另外,请注意 NumberFormat 不是线程安全的。因此,始终创建一个单独的格式实例(在并发情况下可以在外部同步)。

关于java - 为什么我不必实例化 NumberFormat 类的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31961432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com