Класс Format
- Все реализуемые интерфейсы:
Serializable, Cloneable
- Прямые известные подклассы:
DateFormat, ListFormat, MessageFormat, NumberFormat
public abstract class Format extends Object implements Serializable, Cloneable
Format — абстрактный базовый класс для форматирования информации, зависящей от локали, такой как даты, сообщения, числа и списки. Format определяет программный интерфейс для форматирования объектов, зависящих от локали, в Strings (метод format) и для разбора Strings обратно в объекты (метод parseObject).
Как правило, метод parseObject формата должен уметь разбирать любую строку, сформированную его методом format. Однако в исключительных случаях это может быть невозможно. Например, метод format может создать два смежных целых числа без разделителя между ними, и в этом случае parseObject не сможет определить, какие цифры относятся к какому числу.
Создание подклассов
Платформа Java предоставляет специализированные подклассы Format — DateFormat, MessageFormat, NumberFormat и ListFormat — для форматирования дат, сообщений, чисел и списков соответственно.
Конкретные подклассы должны реализовать три метода:
-
format(Object obj, StringBuffer toAppendTo, FieldPosition pos) -
formatToCharacterIterator(Object obj) -
parseObject(String source, ParsePosition pos)
MessageFormat. Подклассы часто также предоставляют дополнительные методы format для определённых типов входных данных, а также методы parse для определённых типов результатов. Любой метод parse, не принимающий аргумент ParsePosition, должен выбрасывать ParseException, если в начале входного текста нет текста в требуемом формате. Большинство подклассов также реализуют следующие фабричные методы:
-
getInstance— для получения подходящего полезного объекта формата для текущей локали -
getInstance(Locale)— для получения подходящего полезного объекта формата для указанной локали
getXxxxInstance для более специализированного управления. Например, класс NumberFormat предоставляет методы getPercentInstance и getCurrencyInstance для получения специализированных средств форматирования чисел. Подклассы Format, позволяющие программистам создавать объекты для локалей (например, с помощью getInstance(Locale)), также должны реализовать следующий метод класса:
public static Locale[] getAvailableLocales()
Подклассам также следует предусмотреть возможность гибкого разбора. Определение гибкости передаётся подклассу.
Наконец, подклассы могут определять набор констант для идентификации различных полей в форматированном выводе. Эти константы используются для создания объекта FieldPosition, который определяет, какая информация содержится в поле и где оно расположено в форматированном результате. Имена этих констант должны иметь вид item_FIELD, где item обозначает поле. Примеры таких констант см. в ERA_FIELD и связанных с ним классах в DateFormat.
Синхронизация
Форматы, как правило, не синхронизированы. Рекомендуется создавать отдельный экземпляр формата для каждого потока. Если несколько потоков одновременно обращаются к формату, синхронизацию необходимо обеспечить извне.
- Начиная с версии:
- 1.1
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
Format.Field |
Определяет константы, используемые в качестве ключей атрибутов в AttributedCharacterIterator, возвращаемом из Format.formatToCharacterIterator, и в качестве идентификаторов полей в FieldPosition. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Единственный конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
clone() |
Создаёт и возвращает копию этого объекта. |
final String |
format |
Форматирует объект и создаёт строку. |
abstract StringBuffer |
format |
Форматирует объект и добавляет полученный текст в указанный буфер строки. |
AttributedCharacterIterator |
formatToCharacterIterator |
Форматирует объект, создавая AttributedCharacterIterator. |
Object |
parseObject |
Разбирает текст с начала указанной строки и создаёт объект. |
abstract Object |
parseObject |
Разбирает текст из указанной строки и создаёт объект. |
Подробное описание конструкторов
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—FieldPosition, указывающий на поле в форматированном тексте - Возвращает:
- буфер строки, переданный в
toAppendTo, с добавленным форматированным текстом - Выбрасывает:
-
NullPointerException— еслиtoAppendToилиposравно null -
IllegalArgumentException— если Format не может отформатировать указанный объект
formatToCharacterIterator
public AttributedCharacterIterator formatToCharacterIterator(Object obj)
AttributedCharacterIterator. Возвращённый AttributedCharacterIterator можно использовать для создания результирующей строки, а также для получения информации о ней. Каждый ключ атрибута AttributedCharacterIterator будет иметь тип Field. Каждая реализация Format определяет допустимые значения каждого атрибута в AttributedCharacterIterator, однако обычно ключ атрибута также используется в качестве значения атрибута.
- Примечание API:
- Подклассам, поддерживающим поля, следует переопределить этот метод и создать
AttributedCharacterIteratorсо значимыми атрибутами. - Требования к реализации:
- Реализация по умолчанию создаёт
AttributedCharacterIteratorбез атрибутов. - Параметры:
-
obj— объект для форматирования - Возвращает:
- AttributedCharacterIterator, описывающий форматированное значение.
- Выбрасывает:
-
NullPointerException— если obj равно null. -
IllegalArgumentException— если Format не может отформатировать указанный объект. - Начиная с версии:
- 1.4
parseObject
public abstract Object parseObject(String source, ParsePosition pos)
Этот метод пытается разобрать текст, начиная с индекса, заданного pos. Если разбор выполнен успешно, индекс pos обновляется до индекса после последнего использованного символа (при разборе необязательно используются все символы до конца строки), после чего возвращается разобранный объект. Обновлённый pos можно использовать как начальную позицию для следующего вызова этого метода. Если возникает ошибка, индекс pos не изменяется, индекс ошибки pos устанавливается в позицию символа, на котором произошла ошибка, и возвращается null.
- Параметры:
-
source—Stringдля разбора -
pos— объектParsePositionс информацией об индексе и индексе ошибки, как описано выше. - Возвращает:
- Объект
Object, разобранный из строки. В случае ошибки возвращаетnull. - Выбрасывает:
-
NullPointerException— еслиsourceилиposравноnull.
parseObject
public Object parseObject(String source) throws ParseException
- Параметры:
-
source—String, разбираемая с начала. - Возвращает:
- Объект
Object, разобранный из строки. - Выбрасывает:
-
ParseException— если разбор не удался -
NullPointerException— еслиsourceравноnull.
clone
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/text/Format.html