こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ご教示ください。

ご教示ください。
javaで日付操作をやっています。

通常、クラスのインスタンスを作成する場合

クラス名 変数名 = new クラス名();

ですが、カレンダークラスを使用した際に

Calender 変数名 = Calender.getInstance();

と出てきました。
Calenderクラスにある、getInstanceメソッドを呼び出していると思います。
クラスをインスタンスすることで、そのクラス内にある、メソッドやフィールドを初期値で使えて(コンストラクタがない場合)と認識しています。
インスタンスで、直接、メソッドを呼び出せる場合があるのでしょうか?

投稿日時 - 2020-03-11 14:29:55

QNo.9722217

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

staticメソッドとインスタンスメソッドの違いをまだ学修されていないと見受けます。
staticメソッドの例として、java.lang.Math クラスのメソッドは全部staticメソッドなのでいちいちMathクラスのインスタンス作成はしません。クラス名.メソッド名() で呼び出します。
double x = Math.sqrt(data);

java.util.Calendar クラスは、シングルトンパターンという作りになっていて、コンストラクターは、外部から呼び出せません(無いわけではない隠蔽されてるだけ)。
static メソッドである getInstance()のなかでのみインスタンス作成可能で、一回作ったら、static private fieldに保持して、このインスタンスを返します。
次回のgetInstance()実行からは、前回作ったインスタンスを返します。

投稿日時 - 2020-03-14 09:59:08

あなたにオススメの質問