javaのインスタンスの生成に関して

[code]

    Date d = new Date();
    Calendar c = Calendar.getInstance();
    
[/code]

上記はどちらとも、インスタンスを生成していますが、片方にはnewが付いていて、もう一方には付いていません。  
これを判断するには一つ一つのクラスの使い方を知るしかないのでしょうか？  
詳しい方、ご教示ください。よろしくお願いいたします。




リファレンスを見て各クラスの使い方を知るしかないというのはその通りですが、[デザインパターン](http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_%28%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%29)にのっとって設計されているのでパターンを把握していれば理解できるかと思います。

たとえば`Calendar`クラスは`abstract`でインスタンスを`new
Calendar()`と作成することができません。実際に使用するのは派生型の`GregorianCalendar`で、`Calendar.getInstance()`では実行環境に応じたインスタンスが返されます。これはFactory
Methodというデザインパターンです。

一方`Date`は単なる値オブジェクトですので、あえて派生型のインスタンスを作成する必要は低いです。

