1

JavaドキュメントによるNumberFormatと、抽象クラスです。しかし、次のコード行は私を混乱させます。

 NumberFormat nf = NumberFormat.getInstance();

が抽象クラスのNumberFormat.getInstance()場合、これをどのように使用できますか? NumberFormat誰でもこれを理解するのを手伝ってもらえますか?

4

4 に答える 4

6

NumberFormat.getInstance()抽象クラスの具象サブクラスのインスタンスを返すことができるstatic factory methodです。NumberFormat

それは次のようなものです:

abstract class Instrument {
    public static Instrument getInstance() {
        return new Guitar();
    }
}

class Guitar extends Instrument { }

だから、あなたが呼び出すとき:

Instrument.getInstance();

Guitar具体的なサブクラスであるのインスタンスを取得します。

于 2013-02-19T13:54:06.823 に答える
2

静的メソッドなので呼び出す ことができます。NumberFormat.getInstance()そのクラスの静的メソッドを呼び出すために、クラスのインスタンスは必要ありません。

NumberFormat.getInstance()のreturnタイプを宣言できますNumberFormat。これは、実際NumberFormatには具象サブクラスのインスタンスを返すためです。ただし、これは、これが機能するのと同じ方法で互換性があります。

String x = "test";
Object y = x;

印刷すると、実際NumberFormat.getInstance().getClass()に使用されている具象サブクラスがわかりますが、特定のクラスを返すことに依存しないでください。重要なのは、それ自体で指定されたメソッドを使用することだけを意図しているということです。NumberFormat

于 2013-02-19T13:56:59.620 に答える
2

このgetInstance()メソッドは、ロケールのデフォルトである NumberFormat のサブクラスを返します。

于 2013-02-19T13:53:45.070 に答える
0

NumberFormat.getInstance()デフォルトで非抽象DecimalFormat実装を返します。

于 2013-02-19T13:54:25.413 に答える