JavaドキュメントによるNumberFormat
と、抽象クラスです。しかし、次のコード行は私を混乱させます。
NumberFormat nf = NumberFormat.getInstance();
が抽象クラスのNumberFormat.getInstance()
場合、これをどのように使用できますか? NumberFormat
誰でもこれを理解するのを手伝ってもらえますか?
JavaドキュメントによるNumberFormat
と、抽象クラスです。しかし、次のコード行は私を混乱させます。
NumberFormat nf = NumberFormat.getInstance();
が抽象クラスのNumberFormat.getInstance()
場合、これをどのように使用できますか? NumberFormat
誰でもこれを理解するのを手伝ってもらえますか?
NumberFormat.getInstance()
抽象クラスの具象サブクラスのインスタンスを返すことができるstatic factory methodです。NumberFormat
それは次のようなものです:
abstract class Instrument {
public static Instrument getInstance() {
return new Guitar();
}
}
class Guitar extends Instrument { }
だから、あなたが呼び出すとき:
Instrument.getInstance();
Guitar
具体的なサブクラスであるのインスタンスを取得します。
静的メソッドなので呼び出す ことができます。NumberFormat.getInstance()
そのクラスの静的メソッドを呼び出すために、クラスのインスタンスは必要ありません。
NumberFormat.getInstance()
のreturnタイプを宣言できますNumberFormat
。これは、実際NumberFormat
には具象サブクラスのインスタンスを返すためです。ただし、これは、これが機能するのと同じ方法で互換性があります。
String x = "test";
Object y = x;
印刷すると、実際NumberFormat.getInstance().getClass()
に使用されている具象サブクラスがわかりますが、特定のクラスを返すことに依存しないでください。重要なのは、それ自体で指定されたメソッドを使用することだけを意図しているということです。NumberFormat
このgetInstance()
メソッドは、ロケールのデフォルトである NumberFormat のサブクラスを返します。
NumberFormat.getInstance()
デフォルトで非抽象DecimalFormat
実装を返します。