|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
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()
最後に、サブクラスには、フォーマットされたさまざまな出力フィールドを識別するために、1 組の定数を定義することができます。これらの定数は、FieldPosition オブジェクトを作成するために使われます。このオブジェクトは、フォーマットされた結果でのフィールドの情報とその位置を識別します。これらの定数の名前は、item_FIELD でなければなりません。item はそのフィールドを示します。これらの定数の例については、DateFormat の ERA_FIELD などを参照してください。
ParsePosition,
FieldPosition,
NumberFormat,
DateFormat,
MessageFormat, 直列化された形式| コンストラクタの概要 | |
Format()
|
|
| メソッドの概要 | |
Object |
clone()
|
String |
format(Object obj)
オブジェクトをフォーマットして文字列を作成します。 |
abstract StringBuffer |
format(Object obj,
StringBuffer toAppendTo,
FieldPosition pos)
オブジェクトをフォーマットして文字列を作成します。 |
Object |
parseObject(String source)
文字列を解析してオブジェクトを作成します。 |
abstract Object |
parseObject(String source,
ParsePosition status)
文字列を解析してオブジェクトを作成します。 |
| クラス java.lang.Object から継承したメソッド |
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
| コンストラクタの詳細 |
public Format()
| メソッドの詳細 |
public final String format(Object obj)
StringBuffer バージョンのフォーマットはサブクラスによってオーバーライドされます。
obj - フォーマットするオブジェクトMessageFormat,
format(Object, StringBuffer, FieldPosition)
public abstract StringBuffer format(Object obj,
StringBuffer toAppendTo,
FieldPosition pos)
StringBuffer format (Number obj, StringBuffer toAppendTo) Number parse (String str)これらの汎用ルーチンによって、MessageFormat などのオブジェクトに対して、さまざまな解析とフォーマットが可能になります。
obj - フォーマットするオブジェクトtoAppendTo - テキストを追加する位置pos - 入力の場合は位置合わせフィールド (必要な場合)。出力の場合は位置合わせフィールドのオフセットMessageFormat,
FieldPosition
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 - 入力-出力パラメータ
これを呼び出す前に、ソースにおいて解析を開始するオフセットを、status.index に設定する必要があります。呼び出したあと、status.index は、解析されたテキストの終わりにあります。エラーがあるとインデックスは変更されません。
解析の際、先行のスペースは捨てられます (解析が正常な場合)。後ろのスペースは元のままです。
例: 「_12_xy」(_ はスペースを表す) を解析して数字を見つけると (インデックス = 0)、結果は数字 12 で、status.index が 3 に更新されます (2 つ目のスペースの前)。2 回目の解析では、「xy」が数字ではないので、結果は ParseException になり、status.index は 3 のままです。
一般にサブクラスでは特定の解析メソッドが提供されますが、それらによってさまざまな型の値が返されます。メソッドは戻り型にオーバーロードすることができないので、これらは一般に parse と呼ばれます。一方、このさまざまなメソッドは、常に parseObject と呼ばれます。状態を取らない解析メソッドは、必要なフォーマットのテキストが開始位置になければ、ParseException をスローする必要があります。
ParsePosition
public Object parseObject(String source)
throws ParseException
public Object clone()
|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||