2017-10-12 26 views
-3

私は各クラスのオブジェクトを作成するため JavaのGregorianCalendarクラスとCalendarクラスの違いは?

GregorianCalendar today = new GregorianCalendar(); 

同様カレンダー今日= Calendar.getInstance()が見つかりました。両方のクラスを使用している間。

なぜそうですか?そして、他のものを使うことの利点は何ですか?

+0

カレンダーは抽象クラスです。インスタンスを取得するには、実際の実装が必要です。 GregorianCalendarは、[グレゴリオ暦](https://en.wikipedia.org/wiki/Gregorian_calendar)の実装です。 Calendar.getInstance()は、ロケールに応じてGregorianCalendar、BuddhistCalendar、またはJapaneseImperialCalendarを返します。 –

+0

GregorianCalendarは閏年をサポートしています。これは、4年ごとに2月29日 –

答えて

0

ほとんどのロケールでは、Calendar.getInstance()と書くとGregorianCalendarオブジェクトが作成されます。しかし、いくつかの例外があります。ロケールをJapaneseImperialCalendarまたはBuddhistCalendarに設定することができます。

CalendarGregorianCalendarであることが本当に必要な場合は、new GregorianCalendar()と明示的に書き込むことができます。しかし、一般的には、JVMがロケールに基づいて適切な種類のCalendarを選択するようにすると、より良いフォームとみなされます。つまり、Calendar.getInstance()と書いて、他のカレンダータイプのいずれかを使用する可能性に対処する必要があります。

Calendarクラスでは、getInstance()には、イランやサウジアラビアで使用されているような他の種類のカレンダーのいずれかを返すロジックがありません。

0

カレンダークラスは、抽象クラス以外の何ものでもありません。抽象クラスを作成する主な理由は、世界中で利用可能な複数のタイプのカレンダーが存在することです。

関連する問題