java.lang.Object | +----java.text.Format
Format 是格式化国别敏感的信息,如日期、消息和数字,的抽象基类。
Format 为将国别敏感的对象格式化为 String (
format 方法 ) 和将 String 分析为对象 (
parseObject 方法 ) 提供了编程接口。任何由
format 格式化的 String 一定能由
parseObject 分析。
如果因为 Format 对象格式化对象指定的类型使格式化失败,
format 抛出一个 IllegalArgumentException。
否则如果对象有不正规形式,format 返回 Unicode 替代字符
\\uFFFD。
当分析不匹配时,parseObject(String) 抛出一个
ParseException,并且 parseObject(String,
ParsePosition) 不改变 ParsePosition
index 成员,返回 null。
子类:
JDK 为 Format 提供了三个具体的子类 --
DateFormat、MessageFormat 和
NumberFormat-- 为了分别格式化日期、信息和数字。
具体的子类必须实现下列方法:
format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
parseObject (String source, ParsePosition pos)
大部分子类也将实现下列两个方法:
getInstance 为了获得适合当前语言环境的可用的格式对象。
getInstance(Local) 为了获得适合指定语言环境的可用的格式对象。
getXxxxInstance 方法。 例如,NumberFormat
类为获得特定的数字格式化程序提供了 getPercentInstance 和
getCurrencyInstance。
Format 的允许程序员为不同语言环境创建对象 ( 例如用
getInstance(Locale) 方法 ) 的子类必须实现下列类方法:
public static Locale[] getAvailableLocales()
最后,子类可能会定义一个常数集合标识格式化输出的不同域。
这些常数用于创建一个 FieldPosition 对象。该对象标识域中包含什么信息以及它们在格式化输出中的位置。 这些常数必须 被命名为
item_FIELD,此处 item 标识域。 关于这些常数的例子,参见 ERA_FIELD 及其
DateFormat 中的友元。
public Format()
public final String format(Object obj)
子类将覆盖 format 的 StringBuffer 版本。
public abstract StringBuffer format(Object obj,
StringBuffer toAppendTo,
FieldPosition pos)
StringBuffer format (Number obj, StringBuffer toAppendTo) Number parse (String str)这些一般的例程允许为诸如 MessageFormat 的对象进行多种形式的分析和格式化。
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.index 设置为源中希望开始分析的位置。 调用之后,status.index 是分析的文本的结尾。 如果发生错误,位置不改变。
当分析时,前导空白字符将被删除 ( 成功的分析 ),而结尾的空白字符将保留。
示例:将 "_12_xy" ( 此处 _ 表示一个空格 ) 分析为一个数字,当 index == 0 结果是数值 12,status.index 修改为 3 ( 在第二个空格之前 ) 。 因为 "xy" 不是一个数字,所以再次分析将引起一个 ParseException,索引仍为 3。
通常,子类将提供特殊的分析方法,返回不同类型的数值。 因为方法不能重载返回类型,通常它们被称为 "parse",而具有多种形式的方法将被称为 parseObject。 如果在起始位置没有要求的形式的文本,任何没有状态的方法将抛出 ParseException 异常。
public Object parseObject(String source) throws ParseException
public Object clone()