2017-04-07 5 views
1

私はJavaの初心者で、最近Java class referenceで働いています。私はちょうどUnixのタイムスタンプ(Long)をSimpleDateFormat::formatに誤って渡してしまいました。しかし、私は参照ページにSimpleDateFormat::format(Long)を見ることができません。イベント親クラスDateFormatにはメソッドformat(Long)がありません。 SimpleDateFormat::format(Long)のようなメソッドがないので、javacはコンパイラエラーを返すべきですか?SimpleDateFormat :: format(Long)がJavaで動作するのはなぜですか?

LongからDateに自動的に変換されますか?

答えて

3

Formatの次のスーパークラスは、format(Object)のオーバーロードを持っています。

現代のAPIデザインではありませんが、そこに行きます。

3

SimpleDateFormatには、署名文字列形式(Object obj)のメソッドがあります。 したがって、Long値のSimpleDateFormatでformatを呼び出すと、ObjectがLongのサブクラスであるか、Long値がObjectであるため、このメソッドが使用されます。

+1

あなたは確かに意味します:オブジェクトは**; **の** **クラスの長い** ;-)です。 –

+0

はい、しかし直接です。階層には、Long - > Number - > Objectがあります。 –

+1

あなたの答えに書いたように、間接的なスーパークラスは2つ上位レベルです。サブクラスではありません。 –

関連する問題