全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
java.lang.Object | +----java.text.Format
Format
は、日付、メッセージ、数字などのロケールに依存する
情報をフォーマットするabstract基本クラスです。
Format
は、ロケールに依存する情報を文字列
にフォーマットするため(format
メソッド)と、文字列
を解析してオブジェクトに戻す
ため(parseObject
メソッド)のプログラミングインターフェースを定義するものです。format
でフォーマットされた文字列
は必ず、
parseObject
で解析できます。
指定する型のオブジェクトを Format
オブジェクトがフォーマット
できないためにフォーマット化が正常に行われないと、format
はIllegalArgumentException
をスローします。そうでなくても、
オブジェクトのフォーマットが正しくないと、format
は UNICODEの
置換文字 \\uFFFD
を返します。
解析時に一致するものがないと、
parseObject(String)
は ParseException
をスローします。
parseObject(String, ParsePosition)
は、
ParsePosition
index
メンバを変更せずに null
を返します。
サブクラス化:
JDKでは、日付、メッセージ、数字をフォーマットする
ために Format
に3つの個別のサブクラス DateFormat
、 MessageFormat
、NumberFormat
が用意されています。
個別のサブクラスには、次の2つのメソッドを実装しなければなりません 。
format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
parseObject (String source, ParsePosition pos)
ほとんどのサブクラスにはさらに次の2つのメソッドが実装されます。
getInstance
。現在のロケールに適した
便利なフォーマットオブジェクトを入手するためのものです。
getInstance(Locale)
。指定するロケールに適した
便利なフォーマットオブジェクトを入手するためのものです。
getXxxxInstance
メソッドを実装する場合もあります。
たとえば、 NumberFormat
クラスには、特殊な数字フォーマッタ
を得るために getPercentInstance
と getCurrencyInstance
メソッドがあります。
ロケール用のオブジェクトをプログラマが作成できるよう
にする場合(たとえばgetInstance(Locale)
)は、
Format
のサブクラスにさらに次のクラスメソッドの実装が
必要です。
public static Locale[] getAvailableLocales()
最後に、サブクラスには、フォーマットされたさまざまな出力フィールドを識別するために、一組の定数を定義することができます。これらの定数は、FieldPositionオブジェクトを作成するために使われます。このオブジェクトは、フォーマットされた結果におけるフィールドの情報とその位置を識別します。これらの定数の名前は、item_FIELD
でなければなりません。item
はそのフィールドを示します。これらの定数の例については、DateFormat
の ERA_FIELD
などを参照してください。
public Format()
public final String format(Object obj)
StringBufferバージョンのフォーマットはサブクラスによってオーバーライドされます。
public abstract StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
StringBuffer format (Number obj, StringBuffer toAppendTo) Number parse (String str)これらの一般的なルーチンによって、MessageFormatなどのオブジェクトに対し、さまざまな解析とフォーマットが可能です。
public abstract Object parseObject(String source, ParsePosition status)
String format (Number obj); String format (long obj); String format (double obj); Number parse (String str);
これを呼び出す前に、ソースにおいて解析を開始するオフセットを、status.indexに設定する必要があります。呼び出した後、status.indexは、解析されたテキストの終わりにあります。エラーがあると、インデックスは変更されません。
解析の際、先行のスペースは捨てられます(解析が正常な場合)。後ろのスペースは元のままです。
例: "_12_xy" (_ はスペースを表す)を解析して数字を見つけると(インデックス = 0)、結果は数字12で、status.indexが3に更新されます(2つ目のスペースの前)。 2回目の解析では、"xy"が数字でないので、結果はParseExceptionになり、status.indexは3のままです。
一般にサブクラスでは特定の解析メソッドが提供されますが、それらによってさまざまな型の値が返されます。メソッドは戻り型にオーバーロードすることができないので、これらは一般に「解析」と呼ばれます。一方、このさまざまなメソッドは、常にparseObjectと呼ばれます。状態を取らない解析メソッドは、必要なフォーマットのテキストが開始位置になければ、ParseExceptionをスローする必要があります。
public Object parseObject(String source) throws ParseException
public Object clone()
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス