public abstract class Format extends Object implements Serializable, Cloneable
Format
は、日付、メッセージ、数字などのロケールに依存する情報をフォーマットするabstract基底クラスです。
Format
は、ロケールに依存する情報をString
にフォーマットするため(format
メソッド)、およびString
を解析してオブジェクトに戻すため(parseObject
メソッド)のプログラミング・インタフェースを定義するものです。
通常、formatのparseObject
メソッドは、そのformat
メソッドによってフォーマットされた任意の文字列を解析できる必要があります。ただし、これが可能でない例外的な場合があります。たとえば、format
メソッドは間に区切り文字がない2つの隣接する整数値を生成する場合があります。この場合、parseObject
は各数字がどの数値に属するのかを示すことができません。
Javaプラットフォームでは、日付、メッセージ、数字をそれぞれフォーマットするため、3つの特殊なサブクラスDateFormat
、MessageFormat
、NumberFormat
がFormat
に用意されています。
具象サブクラスには、次の3つのメソッドを実装しなければいけません。
format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
formatToCharacterIterator(Object obj)
parseObject(String source, ParsePosition pos)
MessageFormat
などによって使用されます。サブクラスは多くの場合、特定の入力タイプのための追加のformat
メソッドや特定の結果タイプのためのparse
メソッドも提供します。ParsePosition
引数をとらないparse
は、要求されたフォーマットのテキストが入力テキストの先頭にない場合、ParseException
をスローします。
ほとんどのサブクラスには、さらに次のファクトリ・メソッドが実装されます。
getInstance
は、現在のロケールに適した便利なフォーマット・オブジェクトを取得するためのものです。
getInstance(Locale)
は、指定されたロケールに適した便利なフォーマット・オブジェクトを取得するためのものです。
getXxxxInstance
メソッドを実装する場合もあります。たとえば、NumberFormat
クラスには、特殊な数字フォーマッタを得るためのgetPercentInstance
およびgetCurrencyInstance
メソッドがあります。
ロケール用のオブジェクトをプログラマが生成できるようにする場合(getInstance(Locale)
など)は、Format
のサブクラスにさらに次のクラス・メソッドの実装が必要です。
public static Locale[] getAvailableLocales()
最後に、サブクラスには、フォーマットされたさまざまな出力フィールドを識別するために、1組の定数を定義することができます。これらの定数は、FieldPositionオブジェクトを作成するために使われます。このオブジェクトは、フォーマットされた結果でのフィールドの情報とその位置を識別します。これらの定数の名前は、item_FIELD
でなければいけません。item
はそのフィールドを示します。これらの定数の例については、DateFormat
のERA_FIELD
などを参照してください。
フォーマットは同期化されません。スレッドごとに別のフォーマット・インスタンスを作成することをお薦めします。複数のスレッドがフォーマットに並行してアクセスする場合は、外部的に同期化する必要があります。
修飾子と型 | クラスと説明 |
---|---|
static class |
Format.Field
Format.formatToCharacterIterator から返されたAttributedCharacterIterator 内の属性キー、およびFieldPosition 内のフィールド識別子として使用する定数を定義します。 |
修飾子 | コンストラクタと説明 |
---|---|
protected |
Format()
唯一のコンストラクタです。
|
修飾子と型 | メソッドと説明 |
---|---|
Object |
clone()
このオブジェクトのコピーを作成して、返します。
|
String |
format(Object obj)
オブジェクトをフォーマットして文字列を作成します。
|
abstract StringBuffer |
format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
オブジェクトをフォーマットし、指定された文字列バッファに結果のテキストを追加します。
|
AttributedCharacterIterator |
formatToCharacterIterator(Object obj)
Objectをフォーマットし、
AttributedCharacterIterator を生成します。 |
Object |
parseObject(String source)
指定された文字列の先頭からテキストを解析してオブジェクトを生成します。
|
abstract Object |
parseObject(String source, ParsePosition pos)
文字列からテキストを解析してオブジェクトを生成します。
|
public final String format(Object obj)
format
(obj, new StringBuffer(), new FieldPosition(0)).toString();
obj
- フォーマットするオブジェクトIllegalArgumentException
- 指定されたオブジェクトをFormatでフォーマットできない場合public abstract StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
pos
引数がフォーマットによって使用されるフィールドを識別する場合は、その引数のインデックスは最初に検出されたフィールドの開始と終了に設定されます。obj
- フォーマットするオブジェクトtoAppendTo
- テキストを追加する位置pos
- フォーマットされたテキスト内のフィールドを識別するFieldPosition
toAppendTo
として渡される文字列バッファ。フォーマットされたテキストが追加されるNullPointerException
- toAppendTo
またはpos
がnullの場合IllegalArgumentException
- 指定されたオブジェクトをFormatでフォーマットできない場合public AttributedCharacterIterator formatToCharacterIterator(Object obj)
AttributedCharacterIterator
を生成します。返されたAttributedCharacterIterator
を使用すると、結果のStringを構築できるとともに、結果のStringについての情報を判定できます。
AttributedCharacterIteratorの各属性キーはField
型です。AttributedCharacterIterator
内の各属性に対する正当な値の定義は、それぞれのFormat
実装に依存しますが、通常、属性キーは属性値としても使用されます。
デフォルトの実装では、属性なしのAttributedCharacterIterator
が生成されます。フィールドをサポートするサブクラスはこれをオーバーライドし、有効な属性を持つAttributedCharacterIterator
を生成します。
obj
- フォーマットするオブジェクトNullPointerException
- objがnullの場合。IllegalArgumentException
- 指定されたオブジェクトをFormatでフォーマットできない場合。public abstract Object parseObject(String source, ParsePosition pos)
メソッドはpos
によって指定されたインデックスを開始位置としてテキストの解析を試みます。解析が完了すると、pos
のインデックスは、使用された最後の文字(解析では、文字列の最後までのすべての文字を使用するとは限らない)のあとのインデックスに更新され、解析されたオブジェクトが返されます。更新されたpos
は、このメソッドの次の呼出しの開始点を示すのに使用できます。エラーが発生した場合は、pos
のインデックスは変更されず、エラーが発生した文字のインデックスにpos
のエラー・インデックスが設定され、nullが返されます。
source
- 部分的に解析されるString
。pos
- 上記のインデックスおよびエラー・インデックス情報を持つParsePosition
オブジェクトObject
。エラーの場合はnullを返す。NullPointerException
- pos
がnullである場合。public Object parseObject(String source) throws ParseException
source
- 先頭が解析されるString
。Object
。ParseException
- 指定された文字列の先頭が解析できない場合。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2017, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。