全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
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()
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス