全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス

クラス java.text.Format

java.lang.Object
   |
   +----java.text.Format

public abstract class Format
extends Object
implements Serializable, Cloneable
Formatは、日付、メッセージ、数字などのロケールに依存する 情報をフォーマットするabstract基本クラスです。

Formatは、ロケールに依存する情報を文字列にフォーマットするため(formatメソッド)と、文字列を解析してオブジェクトに戻す ため(parseObjectメソッド)のプログラミングインターフェースを定義するものです。formatでフォーマットされた文字列は必ず、 parseObjectで解析できます。

指定する型のオブジェクトを Formatオブジェクトがフォーマット できないためにフォーマット化が正常に行われないと、formatIllegalArgumentExceptionをスローします。そうでなくても、 オブジェクトのフォーマットが正しくないと、formatは UNICODEの 置換文字 \\uFFFDを返します。

解析時に一致するものがないと、 parseObject(String)ParseExceptionをスローします。 parseObject(String, ParsePosition) は、 ParsePosition indexメンバを変更せずに nullを返します。

サブクラス化: JDKでは、日付、メッセージ、数字をフォーマットする ために Formatに3つの個別のサブクラス DateFormatMessageFormatNumberFormatが用意されています。

個別のサブクラスには、次の2つのメソッドを実装しなければなりません

  1. format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
  2. parseObject (String source, ParsePosition pos)

ほとんどのサブクラスにはさらに次の2つのメソッドが実装されます。

  1. getInstance。現在のロケールに適した 便利なフォーマットオブジェクトを入手するためのものです。
  2. getInstance(Locale)。指定するロケールに適した 便利なフォーマットオブジェクトを入手するためのものです。
さらに、サブクラスによっては、さらに特殊な制御のために、 他の getXxxxInstanceメソッドを実装する場合もあります。 たとえば、 NumberFormatクラスには、特殊な数字フォーマッタ を得るために getPercentInstancegetCurrencyInstance メソッドがあります。

ロケール用のオブジェクトをプログラマが作成できるよう にする場合(たとえばgetInstance(Locale))は、 Formatのサブクラスにさらに次のクラスメソッドの実装が 必要です。

 public static Locale[] getAvailableLocales()
 

最後に、サブクラスには、フォーマットされたさまざまな出力フィールドを識別するために、一組の定数を定義することができます。これらの定数は、FieldPositionオブジェクトを作成するために使われます。このオブジェクトは、フォーマットされた結果におけるフィールドの情報とその位置を識別します。これらの定数の名前は、item_FIELDでなければなりません。itemはそのフィールドを示します。これらの定数の例については、DateFormatERA_FIELDなどを参照してください。

参考:
ParsePosition, FieldPosition, NumberFormat, DateFormat, MessageFormat

Constructor Index

 o Format()

Method Index

 o clone()
このオブジェクトと同じクラスの新しいオブジェクトを作成します。
 o format(Object)
オブジェクトをフォーマットして文字列を作成します。
 o format(Object, StringBuffer, FieldPosition)
オブジェクトをフォーマットして文字列を作成します。
 o parseObject(String)
文字列を解析してオブジェクトを作成します。
 o parseObject(String, ParsePosition)
文字列を解析してオブジェクトを作成します。

Constructors

 o Format
  public Format()

Methods

 o format
  public final String format(Object obj)
オブジェクトをフォーマットして文字列を作成します。

StringBufferバージョンのフォーマットはサブクラスによってオーバーライドされます。

パラメータ:
obj - フォーマットするオブジェクト
返り値:
フォーマットされた文字列
例外: IllegalArgumentException
Formatがこの型のオブジェクトをフォーマットできない場合
参照:
MessageFormat, format
 o format
  public abstract StringBuffer format(Object obj,
                                      StringBuffer toAppendTo,
                                      FieldPosition pos)
オブジェクトをフォーマットして文字列を作成します。特定のオブジェクトのために、サブクラスにはたとえば次のものが実装されます。
 StringBuffer format (Number obj, StringBuffer toAppendTo)
 Number parse (String str)
 
これらの一般的なルーチンによって、MessageFormatなどのオブジェクトに対し、さまざまな解析とフォーマットが可能です。

パラメータ:
obj - フォーマットするオブジェクト
toAppendTo - テキストをどこに追加するか
status - 入力の場合: 位置合わせフィールド(必要な場合)。出力の場合: 位置合わせフィールドのオフセット。
返り値:
toAppendToとして渡される値(これによって、StringBuffer.append()と同じようにチェーニングが可能)
例外: IllegalArgumentException
指定するオブジェクトをFormatでフォーマットできない場合
参照:
MessageFormat, FieldPosition
 o parseObject
  public abstract Object parseObject(String source,
                                     ParsePosition status)
文字列を解析してオブジェクトを作成します。サブクラスには、特定のオブジェクトのために、たとえば次のものが実装されます。
       String format (Number obj);
       String format (long obj);
       String format (double obj);
       Number parse (String str);
 

パラメータ:
ParsePosition - 入力-出力パラメータ

これを呼び出す前に、ソースにおいて解析を開始するオフセットを、status.indexに設定する必要があります。呼び出した後、status.indexは、解析されたテキストの終わりにあります。エラーがあると、インデックスは変更されません。

解析の際、先行のスペースは捨てられます(解析が正常な場合)。後ろのスペースは元のままです。

例: "_12_xy" (_ はスペースを表す)を解析して数字を見つけると(インデックス = 0)、結果は数字12で、status.indexが3に更新されます(2つ目のスペースの前)。 2回目の解析では、"xy"が数字でないので、結果はParseExceptionになり、status.indexは3のままです。

一般にサブクラスでは特定の解析メソッドが提供されますが、それらによってさまざまな型の値が返されます。メソッドは戻り型にオーバーロードすることができないので、これらは一般に「解析」と呼ばれます。一方、このさまざまなメソッドは、常にparseObjectと呼ばれます。状態を取らない解析メソッドは、必要なフォーマットのテキストが開始位置になければ、ParseExceptionをスローする必要があります。

返り値:
文字列から解析されたオブジェクト。エラーの場合は、nullが返される。
参照:
ParsePosition
 o parseObject
  public Object parseObject(String source) throws ParseException
文字列を解析してオブジェクトを作成します。

例外: ParseException
指定する文字列が無効な場合
 o clone
  public Object clone()
このオブジェクトと同じクラスの新しいオブジェクトを作成します。

オーバーライド:
クラス Objectclone

全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス