- 所有已实现的接口:
Serializable,Cloneable
- 已知子类:
DateFormat,MessageFormat,NumberFormat
Format 是一个抽象基类,用于格式化日期、消息和数字等locale敏感信息。
Format 定义了编程接口,用于将locale敏感的对象格式化为 String s(format 方法)并将 String s 解析回对象(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。
大多数子类还将实现以下工厂方法:
getInstance用于获取适合当前locale的有用格式对象getInstance(Locale)用于获取适用于指定locale的有用格式对象
getXxxxInstance方法以进行更专业的控制。例如,NumberFormat 类提供了 getPercentInstance 和 getCurrencyInstance 方法来获取专门的数字格式化程序。
Format 的子类允许程序员为locale创建对象(例如 getInstance(Locale))也必须实现以下类方法:
public static Locale[] getAvailableLocales()
最后,子类可以定义一组常量来标识格式化输出中的各个字段。这些常量用于创建一个 FieldPosition 对象,该对象标识字段中包含的信息及其在格式化结果中的位置。这些常量应命名为 item_FIELD,其中 item 标识字段。有关这些常量的示例,请参阅 ERA_FIELD 及其在 DateFormat 中的朋友。
同步化
格式一般不同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问一个格式,则必须在外部进行同步。
- 自从:
- 1.1
- 参见:
-
内部类总结
内部类修饰符和类型类描述static class定义用作从Format.formatToCharacterIterator返回的AttributedCharacterIterator中的属性键和FieldPosition中的字段标识符的常量。 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述clone()创建并返回此对象的副本。final String格式化对象以生成字符串。abstract StringBufferformat(Object obj, StringBuffer toAppendTo, FieldPosition pos) 格式化对象并将生成的文本附加到给定的字符串缓冲区。格式化生成AttributedCharacterIterator的对象。parseObject(String source) 从给定字符串的开头解析文本以生成对象。abstract ObjectparseObject(String source, ParsePosition pos) 解析字符串中的文本以生成对象。
-
构造方法详细信息
-
Format
protected Format()唯一的构造方法。 (对于子类构造方法的调用,通常是隐式的。)
-
-
方法详情
-
format
格式化对象以生成字符串。这相当于format(obj, new StringBuffer(), new FieldPosition(0)).toString();- 参数:
obj- 要格式化的对象- 返回:
- 格式化字符串。
- 抛出:
IllegalArgumentException- 如果 Format 无法格式化给定的对象
-
format
格式化对象并将生成的文本附加到给定的字符串缓冲区。如果pos参数标识格式使用的字段,则其索引设置为遇到的第一个此类字段的开头和结尾。- 参数:
obj- 要格式化的对象toAppendTo- 要附加文本的位置pos- AFieldPosition标识格式化文本中的字段- 返回:
-
作为
toAppendTo传入的字符串缓冲区,附加了格式化文本 - 抛出:
NullPointerException- 如果toAppendTo或pos为空IllegalArgumentException- 如果 Format 无法格式化给定的对象
-
formatToCharacterIterator
格式化生成AttributedCharacterIterator的对象。您可以使用返回的AttributedCharacterIterator构建结果字符串,以及确定关于结果字符串的信息。AttributedCharacterIterator 的每个属性键都是
Field类型。由每个Format实现来定义AttributedCharacterIterator中每个属性的合法值是什么,但通常属性键也用作属性值。默认实现创建一个没有属性的
AttributedCharacterIterator。支持字段的子类应该覆盖它并创建一个具有有意义属性的AttributedCharacterIterator。- 参数:
obj- 要格式化的对象- 返回:
- 描述格式化值的 AttributedCharacterIterator。
- 抛出:
NullPointerException- 如果 obj 为空。IllegalArgumentException- 当 Format 无法格式化给定的对象时。- 自从:
- 1.4
-
parseObject
解析字符串中的文本以生成对象。该方法尝试从
pos给出的索引开始解析文本。如果解析成功,则将pos的索引更新为最后使用的字符之后的索引(解析不一定使用到字符串末尾的所有字符),并返回解析后的对象。更新后的pos可用于指示下一次调用此方法的起点。如果发生错误,则不更改pos的索引,将pos的错误索引设置为发生错误的字符的索引,并返回null。- 参数:
source- AString,其中的一部分应该被解析。pos- 具有如上所述的索引和错误索引信息的ParsePosition对象。- 返回:
-
从字符串中解析出的
Object。如果出现错误,则返回 null。 - 抛出:
NullPointerException- 如果source或pos为空。
-
parseObject
从给定字符串的开头解析文本以生成对象。该方法可能不会使用给定字符串的整个文本。- 参数:
source- 一个String的开头应该被解析。- 返回:
-
从字符串中解析出的
Object。 - 抛出:
ParseException- 如果无法解析指定字符串的开头。NullPointerException- 如果source为空。
-
clone
创建并返回此对象的副本。
-