|
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 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |