提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。这意味着所编写的主程序或 applet 是与语言无关的,并且它可以依靠独立的、动态链接的本地化资源。这实现了随时为新本地化添加本地化的灵活性。
这些类能够格式化日期、数字和消息,分析,搜索和排序字符串,以及迭代字符、单词、语句和换行符。此包包含三大主要类和接口组:
用于迭代文本的类
用于格式化和分析的类
用于整理字符串的类
public abstract class Format
extends Object
implements Serializable, Cloneable
Format
是一个用于格式化语言环境敏感的信息(如日期、消息和数字)的抽象基类。
Format
定义了编程接口,用于将语言环境敏感的对象格式化为 String
(使用 format
方法)和将 String
重新分析为对象(使用 parseObject
方法)。
通常,一个 format 的 parseObject
方法必须能分析任何由其 format
方法格式化的字符串。不过,也可能存在不能分析的异常情况。例如,format
方法可能创建中间无分隔符的两个相邻整数,在这种情况下,parseObject
无法判断哪个数字属于哪个数。
Java2 平台为格式化日期、消息和数字分别提供了三个特殊的 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
获取一个适合于当前语言环境的有用的格式对象 getInstance(Locale)
获取一个适合于指定语言环境的有用的格式对象。此外,某些子类还可能为了更特殊的控制实现其它 getXxxxInstance
方法。例如,NumberFormat
类提供了 getPercentInstance
和 getCurrencyInstance
方法来获取特殊的数字格式化程序。
Format
的子类如果允许程序员能为不同语言环境(比如用 getInstance(Locale)
)创建对象,必须实现以下类方法:
public static Locale[] getAvailableLocales()
最后子类可能定义一个常量集合来标识格式输出中的不同字段。这些常量用于创建一个FieldPosition 对象,该对象标识字段中所包含的信息及其在格式化结果中的位置。这些常量应当命名为item _FIELD
,其中item 标识了该字段。有关这些常量的例子,请参阅 ERA_FIELD
及其在 DateFormat
中的同类。
格式通常不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,其它必须保持外部同步。