3

こんにちは、Abstract クラスをインスタンス化できないことは知っています。しかし、ここのJava API ドキュメントでは、カレンダー クラスは抽象クラスでありgetInstance()、Calendar オブジェクトを返す静的メソッドがあります。Abstract calendar オブジェクトをインスタンス化できない場合、このメソッドはどのようにして Calendar オブジェクトを返すのでしょうか?

4

4 に答える 4

4

Calendar.getInstance()ロケールに応じて、具象クラスGregorianCalendarのいずれBuddhistCalendarかのインスタンスを返します。JapaneseImperialCalendarこれらのクラスはすべて、abstract を拡張するため、Calendar ですCalendar。ここみたい

abstract class A {
    public static A getInstance() {
          return new B();
    }
}

class B extends A {
}
于 2013-04-27T05:34:03.340 に答える
2

Calendar を拡張するクラスを返します。この場合は java.util.GregorianCalendar で確認できます。

Calendar cal = Calendar.getInstance();
System.out.println(cal.getClass());

親クラスを直接インスタンス化できない場合でも、サブクラスは親クラスの変数内に格納できます。

于 2013-04-27T05:31:54.010 に答える
0

カレンダーのタイプごとにシングルトン インスタンスがあります。

Calendar cal = Calendar.getInstance();
于 2013-04-27T05:32:50.617 に答える
0

getInstance()カスタムメソッドであり、jdkソースを見ると、返されます(またはクラスGregorianCalendarの他の実装)。java.util.Calendar

リフレクション法getInstance()だと思って混乱したと思いますか?

于 2013-04-27T05:33:46.680 に答える