Ale*_*lex 4 java abstract-class instantiation
我是Java的新手,我有一个初学者的问题:
NumberFormat是一个抽象类,所以我假设我不能创建它的实例.但是有一种getInstance()允许我这样做 的公共静态(工厂?)方法
NumberFormat nf = NumberFormat.getInstance();
Run Code Online (Sandbox Code Playgroud)
我很困惑.如果有人能给我提示,我会很高兴:
谢谢.
DecimalFormat例如,这包括).拥有一个基本未知数字格式的构造函数是没有用的.getInstance()方法是所谓的工厂方法.它返回当前语言环境的匹配数字格式.因为什么样的子类在编译时需要它不知道,它返回一个NumberFormat,但是,例如本身,将是一个分型,很明显(因为你不能创建抽象类的实例).NumberFormatFactory具有工厂方法的地方.实际上你可以从中获得什么
public static final NumberFormat getInstance()
Run Code Online (Sandbox Code Playgroud)
是什么,是ALSO一个NumberFormat,但它是它的一个子类的具体实例.
你不能以任何方式实例化一个抽象类,以便该方法不能返回一个普通的NumberFormat但至少是一个NumberFormat.在这种情况下,该方法用于获取您的语言环境的默认格式化程序,它可能是它的一个DecimalFormat或一些变体
在其文档中DecimalFormat指出:
要获取特定区域设置的NumberFormat(包括默认区域设置),请调用NumberFormat的工厂方法之一,例如getInstance().通常,不要直接调用DecimalFormat构造函数,因为NumberFormat工厂方法可能返回除DecimalFormat之外的子类.
结束:你可以肯定,如果它是抽象的,那么你就无法实例化它,Java本身也不能......因为声明缺少某些部分所以它是一个真正的不完整类型.
| 归档时间: |
|
| 查看次数: |
2222 次 |
| 最近记录: |