public abstract class Format extends Object implements Serializable, Cloneable
Format
是用于格式化区域设置敏感信息(如日期,消息和数字)的抽象基类。
Format
定义了将区域设置敏感对象格式化为String
( format
方法)和用于将String
s解析为对象( parseObject
方法)的parseObject
。
通常,格式的parseObject
方法必须能够解析其format
方法格式化的任何字符串。 但是,这是不可能的例外情况。 例如, format
方法可能创建两个相邻的整数,其间没有分隔符,在这种情况下, parseObject
无法确定哪个数字属于哪个数字。
Java平台提供的三个专业小类Format
- DateFormat
, MessageFormat
和NumberFormat
分别──为格式化日期,消息和数字,。
具体的子类必须实现三种方法:
format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
formatToCharacterIterator(Object obj)
parseObject(String source, ParsePosition pos)
MessageFormat
。
子类通常还为特定输入类型提供额外的format
方法以及特定结果类型的parse
方法。
任何不采用ParsePosition
参数的parse
方法应该在输入文本ParseException
没有所需格式的文本时抛出ParseException
。
大多数子类也将实现以下工厂方法:
getInstance
获取适合当前语言环境的有用的格式对象 getInstance(Locale)
获取适用于指定区域设置的有用的格式对象 getXxxxInstance
方法来进行更专门的控制。
例如, NumberFormat
类提供了getPercentInstance
和getCurrencyInstance
方法来获取专门的数字格式化程序。
Format的Format
允许程序员为语言环境创建对象(例如getInstance(Locale)
)也必须实现以下类方法:
public static Locale[] getAvailableLocales()
最后,子类可以定义一组常量来标识格式化输出中的各种字段。 这些常量用于创建一个FieldPosition对象,它识别字段中包含的信息及其在格式化结果中的位置。 这些常量应该命名为item_FIELD
,其中item
标识字段。 有关这些常量的例子,请参阅ERA_FIELD
及其朋友在DateFormat
。
格式通常不同步。 建议为每个线程创建单独的格式实例。 如果多个线程同时访问格式,则必须在外部进行同步。
ParsePosition
, FieldPosition
, NumberFormat
, DateFormat
, MessageFormat
, Serialized Form
Modifier and Type | Class and Description |
---|---|
static class |
Format.Field
定义在
AttributedCharacterIterator 返回的
Format.formatToCharacterIterator 中用作属性键的
AttributedCharacterIterator ,以及FieldPosition中的字段
FieldPosition 。
|
Modifier | Constructor and Description |
---|---|
protected |
Format()
唯一的构造函数。
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
创建并返回此对象的副本。
|
String |
format(Object obj)
格式化一个对象来生成一个字符串。
|
abstract StringBuffer |
format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
格式化对象并将生成的文本附加到给定的字符串缓冲区。
|
AttributedCharacterIterator |
formatToCharacterIterator(Object obj)
格式化一个对象,生成一个
AttributedCharacterIterator 。
|
Object |
parseObject(String source)
从给定字符串的开头解析文本以产生一个对象。
|
abstract Object |
parseObject(String source, ParsePosition pos)
从字符串中解析文本以生成对象。
|
public final String format(Object obj)
obj
- 要格式化的对象
IllegalArgumentException
- 如果格式化不能格式化给定的对象
public abstract StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
pos
参数标识格式使用的字段,则其索引将设置为遇到的第一个此类字段的开头和结尾。
obj
- 要格式化的对象
toAppendTo
- 要附加文本的位置
pos
-
FieldPosition
格式化文本中的字段的FieldPosition
toAppendTo
传递,附带格式化的文本
NullPointerException
- 如果
toAppendTo
或
pos
为空
IllegalArgumentException
- 如果格式化不能格式化给定的对象
public AttributedCharacterIterator formatToCharacterIterator(Object obj)
AttributedCharacterIterator
。
您可以使用返回的AttributedCharacterIterator
构建生成的字符串,以及确定有关生成的字符串的信息。
AttributedCharacterIterator的每个属性键将为Field
。 它是由每个Format
实现定义什么合法的值是在每个属性AttributedCharacterIterator
,但通常属性键也用作属性值。
默认的实现创建一个AttributedCharacterIterator
没有任何属性。 支持字段的子类应该重写此并创建一个AttributedCharacterIterator
有意义的属性。
obj
- 要格式化的对象
NullPointerException
- 如果obj为空。
IllegalArgumentException
- 格式化格式化给定对象时。
public abstract Object parseObject(String source, ParsePosition pos)
该方法尝试从pos
给出的索引开始解析文本。 如果解析成功,那么在使用最后一个字符之后,索引pos
更新为索引(解析不一定使用字符串末尾的所有字符),并返回解析的对象。 更新的pos
可用于指示下一次调用此方法的起始点。 如果发生错误,则pos
的索引不会更改,错误索引pos
设置为发生错误的pos
的索引,返回null。
source
- A
String
,其中一部分应解析。
pos
- 具有
ParsePosition
的索引和错误索引信息的
ParsePosition
对象。
Object
从字符串中解析出来。
万一出错,返回null。
NullPointerException
- 如果
pos
为空。
public Object parseObject(String source) throws ParseException
source
- A
String
,其开头应被解析。
Object
从字符串中解析出来。
ParseException
- 如果指定字符串的开头不能被解析。