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