模块 java.base
 java.text

类 Format

java.lang.Object
java.text.Format
所有已实现的接口:
Serializable , Cloneable
已知子类:
DateFormat , MessageFormat , NumberFormat

public abstract class Format extends Object implements Serializable , Cloneable
Format 是一个抽象基类,用于格式化日期、消息和数字等locale敏感信息。

Format 定义了编程接口,用于将locale敏感的对象格式化为 String s(format 方法)并将 String s 解析回对象(parseObject 方法)。

通常,格式的 parseObject 方法必须能够解析由其 format 方法格式化的任何字符串。但是,可能存在无法做到这一点的例外情况。例如,format 方法可能会创建两个相邻的整数,中间没有分隔符,在这种情况下,parseObject 无法分辨哪些数字属于哪个数字。

子类化

Java 平台提供了 Format 的三个专用子类——DateFormatMessageFormatNumberFormat——分别用于格式化日期、消息和数字。

具体的子类必须实现三个方法:

  1. format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
  2. formatToCharacterIterator(Object obj)
  3. parseObject(String source, ParsePosition pos)
这些通用方法允许对对象进行多态解析和格式化,例如,由 MessageFormat 使用。子类通常还为特定输入类型提供额外的 format 方法,以及为特定结果类型提供 parse 方法。当输入文本的开头没有所需格式的文本时,任何不采用 ParsePosition 参数的 parse 方法都应抛出 ParseException

大多数子类还将实现以下工厂方法:

  1. getInstance 用于获取适合当前locale的有用格式对象
  2. getInstance(Locale) 用于获取适用于指定locale的有用格式对象
此外,一些子类还可能实现其他getXxxxInstance方法以进行更专业的控制。例如,NumberFormat 类提供了 getPercentInstancegetCurrencyInstance 方法来获取专门的数字格式化程序。

Format 的子类允许程序员为locale创建对象(例如 getInstance(Locale))也必须实现以下类方法:

 public static Locale[] getAvailableLocales()
 

最后,子类可以定义一组常量来标识格式化输出中的各个字段。这些常量用于创建一个 FieldPosition 对象,该对象标识字段中包含的信息及其在格式化结果中的位置。这些常量应命名为 item_FIELD,其中 item 标识字段。有关这些常量的示例,请参阅 ERA_FIELD 及其在 DateFormat 中的朋友。

同步化

格式一般不同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问一个格式,则必须在外部进行同步。

自从:
1.1
参见:
  • 构造方法详细信息

    • Format

      protected Format()
      唯一的构造方法。 (对于子类构造方法的调用,通常是隐式的。)
  • 方法详情

    • format

      public final String  format(Object  obj)
      格式化对象以生成字符串。这相当于
      format (obj, new StringBuffer(), new FieldPosition(0)).toString();
      参数:
      obj - 要格式化的对象
      返回:
      格式化字符串。
      抛出:
      IllegalArgumentException - 如果 Format 无法格式化给定的对象
    • format

      public abstract StringBuffer  format(Object  obj, StringBuffer  toAppendTo, FieldPosition  pos)
      格式化对象并将生成的文本附加到给定的字符串缓冲区。如果 pos 参数标识格式使用的字段,则其索引设置为遇到的第一个此类字段的开头和结尾。
      参数:
      obj - 要格式化的对象
      toAppendTo - 要附加文本的位置
      pos - A FieldPosition 标识格式化文本中的字段
      返回:
      作为 toAppendTo 传入的字符串缓冲区,附加了格式化文本
      抛出:
      NullPointerException - 如果 toAppendTopos 为空
      IllegalArgumentException - 如果 Format 无法格式化给定的对象
    • formatToCharacterIterator

      public AttributedCharacterIterator  formatToCharacterIterator(Object  obj)
      格式化生成 AttributedCharacterIterator 的对象。您可以使用返回的 AttributedCharacterIterator 构建结果字符串,以及确定关于结果字符串的信息。

      AttributedCharacterIterator 的每个属性键都是 Field 类型。由每个 Format 实现来定义 AttributedCharacterIterator 中每个属性的合法值是什么,但通常属性键也用作属性值。

      默认实现创建一个没有属性的AttributedCharacterIterator。支持字段的子类应该覆盖它并创建一个具有有意义属性的AttributedCharacterIterator

      参数:
      obj - 要格式化的对象
      返回:
      描述格式化值的 AttributedCharacterIterator。
      抛出:
      NullPointerException - 如果 obj 为空。
      IllegalArgumentException - 当 Format 无法格式化给定的对象时。
      自从:
      1.4
    • parseObject

      public abstract Object  parseObject(String  source, ParsePosition  pos)
      解析字符串中的文本以生成对象。

      该方法尝试从 pos 给出的索引开始解析文本。如果解析成功,则将pos的索引更新为最后使用的字符之后的索引(解析不一定使用到字符串末尾的所有字符),并返回解析后的对象。更新后的 pos 可用于指示下一次调用此方法的起点。如果发生错误,则不更改pos的索引,将pos的错误索引设置为发生错误的字符的索引,并返回null。

      参数:
      source - A String ,其中的一部分应该被解析。
      pos - 具有如上所述的索引和错误索引信息的 ParsePosition 对象。
      返回:
      从字符串中解析出的 Object。如果出现错误,则返回 null。
      抛出:
      NullPointerException - 如果 sourcepos 为空。
    • parseObject

      public Object  parseObject(String  source) throws ParseException
      从给定字符串的开头解析文本以生成对象。该方法可能不会使用给定字符串的整个文本。
      参数:
      source - 一个 String 的开头应该被解析。
      返回:
      从字符串中解析出的 Object
      抛出:
      ParseException - 如果无法解析指定字符串的开头。
      NullPointerException - 如果 source 为空。
    • clone

      public Object  clone()
      创建并返回此对象的副本。
      重写:
      clone 在类 Object
      返回:
      此实例的克隆。
      参见: