• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:formatメソッドについて)

formatメソッドについて

このQ&Aのポイント
  • formatメソッドは、指定された形式で数値や文字列をフォーマットするためのメソッドです。
  • 例えば、DecimalFormatクラスのformatメソッドを使用すると、整数や小数を指定した形式で表示することができます。
  • しかし、formatメソッドの引数には数値型のオブジェクトを渡す必要があります。文字列を渡すとエラーが発生します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30871
noname#30871
回答No.1

 引数がObject型だからといって、あらゆるクラスをフォーマットしなければならないという決まりはありません。したがって、Stringを受け取らなければならない、というわけでもありません。  引数にどんなクラスを受け取れるのかは、Formatの実装クラスに任されています。実装クラスと書いたのは、Formatは抽象クラスだからです。  ためしに「new Long(1)」を渡すとどうなるでしょうか。  さて次に、format(1)のほうです。確かに、Formatクラスには基本型を受け取るformat()メソッドはありません。  しかし、fmtはFormatではなくてDecimalFormatです。  DecimalFormatはFormatの派生クラスであるNumberFormat型、さらにその派生クラスです。  NumberFormat型では、format(long)が定義されています。DecimalFormat型では、これを引き継いでいます。  したがって、format(1)と書くとformat(long)が適用されるのです。

makinko0129
質問者

お礼

書き込みしてくださり、ありがとうございました。 amajun様の答え、大変よく理解できました。 Formatクラスが抽象クラスというのも、amajun様に指摘されて今気付きました。 今回の私の悩みが解決したのはもちろんのことなのですが、その他に、クラスのextendsの大切さというか、リファレンスの追跡の仕方というか、今までよくわからなかったことがかなり明確になった感じです。 お忙しい中、本当にありがとうございました<(_ _)>

すると、全ての回答が全文表示されます。

関連するQ&A