Spec-Zone.ru › OpenJDK 21

Класс MessageFormat

java.lang.Object
java.text.Format
java.text.MessageFormat
Все реализуемые интерфейсы:
Serializable, Cloneable
public class MessageFormat extends Format
MessageFormat предоставляет средство для создания конкатенированных сообщений языково-нейтральным способом. Используйте это для построения сообщений, отображаемых для конечных пользователей.

MessageFormat принимает набор объектов, форматирует их, а затем вставляет отформатированные строки в шаблон в соответствующих местах.

Примечание: MessageFormat отличается от других классов Format тем, что вы создаете объект MessageFormat с помощью одного из его конструкторов (а не с помощью фабричного метода в стиле getInstance). Фабричные методы не нужны, потому что MessageFormat сам по себе не реализует специфичное для локали поведения. Любое специфичное для локали поведение определяется шаблоном, который вы предоставляете, а также подформатами, используемыми для вставленных аргументов.

Шаблоны и их интерпретация

MessageFormat использует шаблоны следующего вида:
 MessageFormatPattern:
         String
         MessageFormatPattern FormatElement String

 FormatElement:
         { ArgumentIndex }
         { ArgumentIndex , FormatType }
         { ArgumentIndex , FormatType , FormatStyle }

 FormatType: one of 
         number date time choice

 FormatStyle:
         short
         medium
         long
         full
         integer
         currency
         percent
         SubformatPattern
 

Внутри строки пара одинарных кавычек может использоваться для заключения в кавычки любых произвольных символов, кроме одинарных кавычек. Например, строка шаблона "'{0}'" представляет строку "{0}", а не FormatElement. Сама одинарная кавычка должна быть представлена двумя одинарными кавычками '' внутри строки. Например, строка шаблона "'{''}'" интерпретируется как последовательность '{ (начало кавычек и левая фигурная скобка), '' (одинарная кавычка) и }' (правая фигурная скобка и конец кавычек), а не '{' и '}' (заключенные в кавычки левая и правая фигурные скобки): представляющая строку "{'}", а не "{}".

SubformatPattern интерпретируется соответствующим подформатом, и применяются правила шаблонов, зависящие от подформата. Например, строка шаблона "{1,number,$'#',##}" (SubformatPattern с подчеркиванием) создаст числовой формат с заключенным в кавычки знаком решетки, с результатом, например: "$#31,45". Подробности см. в документации по каждому подклассу Format.

Любая незакрытая кавычка обрабатывается как закрытая в конце заданного шаблона. Например, строка шаблона "'{0}" обрабатывается как шаблон "'{0}'".

Любые фигурные скобки внутри незаключенного в кавычки шаблона должны быть сбалансированы. Например, "ab {0} de" и "ab '}' de" являются допустимыми шаблонами, но "ab {0'}' de", "ab } de" и "''{''" — нет.

Предупреждение:
Правила использования кавычек в шаблонах форматов сообщений, к сожалению, оказались несколько запутанными. В частности, локализаторам не всегда очевидно, нужно ли удваивать одинарные кавычки или нет. Обязательно сообщите локализаторам о правилах и укажите им (например, используя комментарии в исходных файлах файлов ресурсов), какие строки будут обрабатываться MessageFormat. Обратите внимание, что локализаторам может потребоваться использовать одинарные кавычки в переведенных строках, где в оригинальной версии их нет.

Значение ArgumentIndex — это неотрицательное целое число, записанное с использованием цифр '0' по '9', и представляет собой индекс в массиве arguments, передаваемый методам format или результирующий массив, возвращаемый методами parse.

Значения FormatType и FormatStyle используются для создания экземпляра Format для элемента формата. В следующей таблице показано, как значения сопоставляются с экземплярами Format. Комбинации, не показанные в таблице, являются недопустимыми. SubformatPattern должен быть допустимой строкой шаблона для используемого подкласса Format.

Shows how FormatType and FormatStyle values map to Format instances
FormatType FormatStyle Созданный подформат
(none) (none) null
number (none) NumberFormat.getInstance(getLocale())
integer NumberFormat.getIntegerInstance(getLocale())
currency NumberFormat.getCurrencyInstance(getLocale())
percent NumberFormat.getPercentInstance(getLocale())
SubformatPattern new DecimalFormat(subformatPattern, DecimalFormatSymbols.getInstance(getLocale()))
date (none) DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())
short DateFormat.getDateInstance(DateFormat.SHORT, getLocale())
medium DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())
long DateFormat.getDateInstance(DateFormat.LONG, getLocale())
full DateFormat.getDateInstance(DateFormat.FULL, getLocale())
SubformatPattern new SimpleDateFormat(subformatPattern, getLocale())
time (none) DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())
short DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())
medium DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())
long DateFormat.getTimeInstance(DateFormat.LONG, getLocale())
full DateFormat.getTimeInstance(DateFormat.FULL, getLocale())
SubformatPattern new SimpleDateFormat(subformatPattern, getLocale())
choice SubformatPattern new ChoiceFormat(subformatPattern)

Информация об использовании

Вот несколько примеров использования. В реальных интернационализированных программах шаблон формата сообщения и другие статические строки, конечно же, будут получены из файлов ресурсов. Другие параметры будут динамически определяться во время выполнения.

В первом примере используется статический метод MessageFormat.format, который внутренне создает MessageFormat для одноразового использования:

int planet = 7;
String event = "a disturbance in the Force";

String result = MessageFormat.format(
    "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
    planet, new Date(), event);
Вывод:
 At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
 

В следующем примере создается экземпляр MessageFormat, который можно использовать многократно:

int fileCount = 1273;
String diskName = "MyDisk";
Object[] testArgs = {Long.valueOf(fileCount), diskName};

MessageFormat form = new MessageFormat(
    "The disk \"{1}\" contains {0} file(s).");

System.out.println(form.format(testArgs));
Вывод с различными значениями для fileCount:
 The disk "MyDisk" contains 0 file(s).
 The disk "MyDisk" contains 1 file(s).
 The disk "MyDisk" contains 1,273 file(s).
 

Для более сложных шаблонов можно использовать ChoiceFormat для создания правильных форм единственного и множественного числа:

MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0}.");
double[] filelimits = {0,1,2};
String[] filepart = {"no files","one file","{0,number} files"};
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
form.setFormatByArgumentIndex(0, fileform);

int fileCount = 1273;
String diskName = "MyDisk";
Object[] testArgs = {Long.valueOf(fileCount), diskName};

System.out.println(form.format(testArgs));
Вывод с различными значениями для fileCount:
 The disk "MyDisk" contains no files.
 The disk "MyDisk" contains one file.
 The disk "MyDisk" contains 1,273 files.
 

Вы можете создать ChoiceFormat программным способом, как в приведенном выше примере, или с помощью шаблона. См. ChoiceFormat для получения дополнительной информации.

form.applyPattern(
   "There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}.");

Примечание: Как мы видим выше, строка, созданная ChoiceFormat в MessageFormat, рассматривается как специальная; вхождения '{' используются для указания подформатов и вызывают рекурсию. Если вы создаете как MessageFormat, так и ChoiceFormat программным способом (вместо использования строковых шаблонов), то будьте осторожны, чтобы не создавать формат, который рекурсивно вызывает сам себя, что приведет к бесконечному циклу.

Когда один аргумент анализируется в строке более одного раза, последнее совпадение будет конечным результатом анализа. Например,

MessageFormat mf = new MessageFormat("{0,number,#.##}, {0,number,#.#}");
Object[] objs = {Double.valueOf(3.1415)};
String result = mf.format( objs );
// result now equals "3.14, 3.1"
objs = mf.parse(result, new ParsePosition(0));
// objs now equals {Double.valueOf(3.1)}

Аналогично, при разборе с помощью объекта MessageFormat с шаблонами, содержащими несколько вхождений одного и того же аргумента, будет возвращено последнее совпадение. Например,

MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
String forParsing = "x, y, z";
Object[] objs = mf.parse(forParsing, new ParsePosition(0));
// objs now equals {new String("z")}

Синхронизация

Форматы сообщений не синхронизированы. Рекомендуется создавать отдельные экземпляры формата для каждого потока. Если несколько потоков одновременно обращаются к формату, необходимо обеспечить внешнюю синхронизацию.

Since:
1.1
See Also:
  • Locale
  • Format
  • NumberFormat
  • DecimalFormat
  • DecimalFormatSymbols
  • ChoiceFormat
  • DateFormat
  • SimpleDateFormat
  • Serialized Form

Краткое описание вложенных классов

Modifier and Type Class Описание
static class  MessageFormat.Field
Определяет константы, используемые в качестве ключей атрибутов в объекте AttributedCharacterIterator , возвращаемом методом MessageFormat.formatToCharacterIterator.

Краткое описание конструкторов

Конструктор Описание
MessageFormat(String pattern)
Создаёт MessageFormat для локали по умолчанию FORMAT и указанного шаблона.
MessageFormat(String pattern, Locale locale)
Создаёт MessageFormat для указанной локали и шаблона.

Краткое описание методов

Modifier and Type Метод Описание
void applyPattern(String pattern)
Устанавливает шаблон, используемый этим форматом сообщений.
Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Сравнение на равенство двух объектов формата сообщений.
final StringBuffer format(Object[] arguments, StringBuffer result, FieldPosition pos)
Форматирует массив объектов и добавляет шаблон MessageFormat, заменив элементы форматирования отформатированными объектами, в предоставленный StringBuffer.
final StringBuffer format(Object arguments, StringBuffer result, FieldPosition pos)
Форматирует массив объектов и добавляет шаблон MessageFormat, заменив элементы форматирования отформатированными объектами, в предоставленный StringBuffer.
static String format(String pattern, Object... arguments)
Создаёт MessageFormat с заданным шаблоном и использует его для форматирования заданных аргументов.
AttributedCharacterIterator formatToCharacterIterator(Object arguments)
Форматирует массив объектов и вставляет их в шаблон MessageFormat, создавая AttributedCharacterIterator.
Format[] getFormats()
Получает форматы, используемые для элементов форматирования в ранее заданной строке шаблона.
Format[] getFormatsByArgumentIndex()
Получает форматы, используемые для значений, переданных в методы format или возвращённых методами parse.
Locale getLocale()
Получает локаль, используемую при создании или сравнении подформатов.
int hashCode()
Генерирует хэш-код для объекта формата сообщений.
Object[] parse(String source)
Разбирает текст с начала заданной строки, чтобы получить массив объектов.
Object[] parse(String source, ParsePosition pos)
Разбирает строку.
Object parseObject(String source, ParsePosition pos)
Разбирает текст из строки, чтобы получить массив объектов.
void setFormat(int formatElementIndex, Format newFormat)
Устанавливает формат для элемента форматирования с заданным индексом элемента форматирования в ранее установленной строке шаблона.
void setFormatByArgumentIndex(int argumentIndex, Format newFormat)
Устанавливает формат для элементов форматирования в ранее установленной строке шаблона, использующих данный индекс аргумента.
void setFormats(Format[] newFormats)
Устанавливает форматы для элементов форматирования в ранее установленной строке шаблона.
void setFormatsByArgumentIndex(Format[] newFormats)
Устанавливает форматы для значений, переданных в методы format или возвращённых методами parse.
void setLocale(Locale locale)
Устанавливает локаль, используемую при создании или сравнении подформатов.
String toPattern()
Возвращает шаблон, представляющий текущее состояние формата сообщений.

Методы, унаследованные от класса java.text.Format

format, parseObject

Методы, унаследованные от класса java.lang.Object

finalize, getClass, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

MessageFormat

public MessageFormat(String pattern)
Создаёт MessageFormat для локали по умолчанию FORMAT и указанного шаблона. Конструктор сначала устанавливает локаль, затем анализирует шаблон и создаёт список подформатов для элементов форматирования, содержащихся в нём. Шаблоны и их интерпретация указаны в описании класса.
Параметры:
pattern - шаблон для этого формата сообщений
Исключения:
IllegalArgumentException - если шаблон некорректен
NullPointerException - если pattern имеет значение null

MessageFormat

public MessageFormat(String pattern, Locale locale)
Создаёт MessageFormat для указанной локали и шаблона. Конструктор сначала устанавливает локаль, затем анализирует шаблон и создаёт список подформатов для элементов форматирования, содержащихся в нём. Шаблоны и их интерпретация указаны в описании класса.
Требования к реализации:
Реализация по умолчанию выбрасывает NullPointerException если locale имеет значение null либо во время создания объекта MessageFormat, либо позже, когда format() вызывается экземпляром MessageFormat с null локалём, и реализация использует подформат, зависящий от локали.
Параметры:
pattern - шаблон для этого формата сообщений
locale - локаль для этого формата сообщений
Исключения:
IllegalArgumentException - если шаблон некорректен
NullPointerException - если pattern имеет значение null или locale имеет значение null и реализация использует подформат, зависящий от локали.
C:
1.4

Подробное описание методов

setLocale

public void setLocale(Locale locale)
Устанавливает локаль, используемую при создании или сравнении подформатов. Это влияет на последующие вызовы
  • методов applyPattern и toPattern, если элементы формата указывают тип формата и, следовательно, подформаты создаются в методе applyPattern, а также
  • методов format и formatToCharacterIterator, если элементы формата не указывают тип формата и, следовательно, подформаты создаются в методах форматирования.
Уже созданные подформаты не затрагиваются.
Параметры:
locale - локаль, используемая при создании или сравнении подформатов

getLocale

public Locale getLocale()
Возвращает локаль, используемую при создании или сравнении подформатов.
Возвращает:
локаль, используемая при создании или сравнении подформатов

applyPattern

public void applyPattern(String pattern)
Устанавливает шаблон, используемый этим форматом сообщений. Метод анализирует шаблон и создаёт список подформатов для элементов форматирования, содержащихся в нём. Шаблоны и их интерпретация указаны в описании класса.
Параметры:
pattern - шаблон для этого формата сообщений
Исключения:
IllegalArgumentException - если шаблон некорректен
NullPointerException - если pattern имеет значение null

toPattern

public String toPattern()
Возвращает шаблон, представляющий текущее состояние формата сообщений. Строка строится из внутренней информации и, следовательно, не обязательно равна ранее применённому шаблону.
Возвращает:
шаблон, представляющий текущее состояние формата сообщений

setFormatsByArgumentIndex

public void setFormatsByArgumentIndex(Format[] newFormats)
Устанавливает форматы для использования с значениями, переданными в методы format или возвращаемыми методами parse. Индексы элементов в newFormats соответствуют индексам аргументов, используемым в строке шаблона, установленной ранее. Порядок форматов в newFormats таким образом соответствует порядку элементов в массиве arguments, переданном в методы format, или результата массива, возвращаемого методами parse.

Если индекс аргумента используется более чем для одного элемента формата в строке шаблона, то соответствующий новый формат используется для всех таких элементов формата. Если индекс аргумента не используется ни для одного элемента формата в строке шаблона, то соответствующий новый формат игнорируется. Если предоставлено меньше форматов, чем необходимо, то только форматы для индексов аргументов меньше newFormats.length будут заменены.

Параметры:
newFormats - новые форматы для использования
Исключения:
NullPointerException - если newFormats равно null
C:
1.4

setFormats

public void setFormats(Format[] newFormats)
Устанавливает форматы для использования с элементами формата в ранее заданной строке шаблона. Порядок форматов в newFormats соответствует порядку элементов формата в строке шаблона.

Если предоставлено больше форматов, чем нужно строке шаблона, оставшиеся игнорируются. Если предоставлено меньше форматов, чем нужно, то заменены только первые newFormats.length формата.

Поскольку порядок элементов формата в строке шаблона часто меняется во время локализации, обычно лучше использовать метод setFormatsByArgumentIndex, который предполагает порядок форматов, соответствующий порядку элементов в массиве arguments, переданном в методы format, или результата массива, возвращаемого методами parse.

Параметры:
newFormats - новые форматы для использования
Исключения:
NullPointerException - если newFormats равно null

setFormatByArgumentIndex

public void setFormatByArgumentIndex(int argumentIndex, Format newFormat)
Устанавливает формат для использования с элементами формата в ранее заданной строке шаблона, использующими данный индекс аргумента. Индекс аргумента является частью определения элемента формата и представляет собой индекс в массиве arguments , переданном в методы format, или результата массива, возвращаемого методами parse.

Если индекс аргумента используется более чем для одного элемента формата в строке шаблона, то новый формат используется для всех таких элементов формата. Если индекс аргумента не используется ни для одного элемента формата в строке шаблона, то новый формат игнорируется.

Параметры:
argumentIndex - индекс аргумента, для которого использовать новый формат
newFormat - новый формат для использования
C:
1.4

setFormat

public void setFormat(int formatElementIndex, Format newFormat)
Устанавливает формат для использования с элементом формата с заданным индексом элемента формата в ранее заданной строке шаблона. Индекс элемента формата — это нулевой индекс элемента формата, считая от начала строки шаблона.

Поскольку порядок элементов формата в строке шаблона часто меняется во время локализации, обычно лучше использовать метод setFormatByArgumentIndex, который обращается к элементам формата на основе индекса аргумента.

Параметры:
formatElementIndex - индекс элемента формата в шаблоне
newFormat - формат для использования с указанным элементом формата
Исключения:
ArrayIndexOutOfBoundsException - если formatElementIndex равно или больше, чем количество элементов формата в строке шаблона

getFormatsByArgumentIndex

public Format[] getFormatsByArgumentIndex()
Возвращает форматы, используемые для значений, переданных в методы format или возвращаемые методами parse. Индексы элементов в возвращаемом массиве соответствуют индексам аргументов, используемым в ранее заданной строке шаблона. Порядок форматов в возвращаемом массиве, таким образом, соответствует порядку элементов в массиве arguments, переданном в методы format, или результата массива, возвращаемого методами parse.

Если индекс аргумента используется более чем для одного элемента формата в строке шаблона, то формат, используемый для последнего такого элемента формата, возвращается в массиве. Если индекс аргумента не используется ни для одного элемента формата в строке шаблона, то в массиве возвращается null.

Возвращает:
форматы, используемые для аргументов в шаблоне
C:
1.4

getFormats

public Format[] getFormats()
Возвращает форматы, используемые для элементов формата в ранее заданной строке шаблона. Порядок форматов в возвращаемом массиве соответствует порядку элементов формата в строке шаблона.

Поскольку порядок элементов формата в строке шаблона часто меняется во время локализации, обычно лучше использовать метод getFormatsByArgumentIndex, который предполагает порядок форматов, соответствующий порядку элементов в массиве arguments, переданном в методы format, или результата массива, возвращаемого методами parse.

Возвращает:
форматы, используемые для элементов формата в шаблоне

форматировать

public final StringBuffer format(Object[] arguments, StringBuffer result, FieldPosition pos)
Форматирует массив объектов и добавляет шаблон MessageFormat, заменив элементы форматирования отформатированными объектами, в предоставленный StringBuffer.

Текст, заменяющий отдельные элементы форматирования, выводится из текущего подформата элемента форматирования и элемента arguments в индексе аргумента элемента форматирования, как указано в первой соответствующей строке следующей таблицы. Аргумент считается недоступным, если arguments равен null или содержит меньше, чем argumentIndex+1 элементов.

Примеры подформата, аргумента и отформатированного текста
Подформат Аргумент Отформатированный текст
любой недоступен "{" + argumentIndex + "}"
null "null"
instanceof ChoiceFormat любой subformat.format(argument).indexOf('{') >= 0 ?
(new MessageFormat(subformat.format(argument), getLocale())).format(argument) : subformat.format(argument)
!= null любой subformat.format(argument)
null instanceof Number NumberFormat.getInstance(getLocale()).format(argument)
instanceof Date DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, getLocale()).format(argument)
instanceof String argument
любой argument.toString()

Если pos не null и ссылается на Field.ARGUMENT, будет возвращено местоположение первой отформатированной строки.

Параметры:
arguments - массив объектов, которые необходимо отформатировать и заменить.
result - место, куда добавляется текст.
pos - отслеживает позицию первого заменённого аргумента в строке вывода.
Возвращает:
буфер строк, переданный как result, с добавленным отформатированным текстом
Выбрасывает:
IllegalArgumentException - если аргумент в массиве arguments не имеет типа, ожидаемого элементами форматирования, которые его используют.
NullPointerException - если result равен null, или если экземпляр MessageFormat, вызывающий этот метод, имеет локаль, установленную в null, а реализация использует подформат, зависящий от локали.

форматировать

public static String format(String pattern, Object... arguments)
Создает MessageFormat с заданным шаблоном и использует его для форматирования заданных аргументов. Это эквивалентно
(new MessageFormat(pattern)).format(arguments, new StringBuffer(), null).toString()
Параметры:
pattern - строка шаблона
arguments - объект(ы) для форматирования
Возвращает:
отформатированная строка
Выбрасывает:
IllegalArgumentException - если шаблон некорректен, или если аргумент в массиве arguments не имеет типа, ожидаемого элементами форматирования, которые его используют.
NullPointerException - если pattern равен null

форматировать

public final StringBuffer format(Object arguments, StringBuffer result, FieldPosition pos)
Форматирует массив объектов и добавляет шаблон MessageFormat, заменив элементы форматирования отформатированными объектами, в предоставленный StringBuffer. Это эквивалентно
format((Object[]) arguments, result, pos)
Определено в:
format в классе Format
Параметры:
arguments - массив объектов, которые необходимо отформатировать и заменить.
result - место, куда добавляется текст.
pos - отслеживает позицию первого заменённого аргумента в строке вывода.
Возвращает:
буфер строк, переданный как toAppendTo, с добавленным отформатированным текстом
Выбрасывает:
IllegalArgumentException - если аргумент в массиве arguments не имеет типа, ожидаемого элементами форматирования, которые его используют.
NullPointerException - если result равен null, или если экземпляр MessageFormat, вызывающий этот метод, имеет локаль, установленную в null, а реализация использует подформат, зависящий от локали.

formatToCharacterIterator

public AttributedCharacterIterator formatToCharacterIterator(Object arguments)
Форматирует массив объектов и вставляет их в шаблон MessageFormat, создавая AttributedCharacterIterator. Вы можете использовать возвращённый AttributedCharacterIterator для построения результирующей строки, а также для определения информации о результирующей строке.

Текст возвращённого AttributedCharacterIterator такой же, как возвращался бы

format(arguments, new StringBuffer(), null).toString()

Кроме того, AttributedCharacterIterator содержит как минимум атрибуты, указывающие, откуда текст был сгенерирован из аргумента в массиве arguments. Ключи этих атрибутов имеют тип MessageFormat.Field, их значения — объекты Integer указывающие на индекс в массиве arguments аргумента, из которого был сгенерирован текст.

Атрибуты/значения из базовых экземпляров Format , которые использует MessageFormat, также будут размещены в результирующем AttributedCharacterIterator. Это позволяет не только определить, где аргумент помещается в результирующую строку, но также и какие поля он содержит в свою очередь.

Переопределяет:
formatToCharacterIterator в классе Format
Параметры:
arguments - массив объектов, которые необходимо отформатировать и заменить.
Возвращает:
AttributedCharacterIterator, описывающий отформатированное значение.
Выбрасывает:
NullPointerException - если arguments равно null.
IllegalArgumentException - если аргумент в массиве arguments не имеет типа, ожидаемого элементами форматирования, которые его используют.
С:
1.4

разбирать

public Object[] parse(String source, ParsePosition pos)
Парсит строку.

Ограничения: парсинг может завершиться неудачей по ряду причин. Например:

  • Если один из аргументов не встречается в шаблоне.
  • Если формат аргумента теряет информацию, например, с форматом выбора, где большое число форматируется как "много".
  • Ещё не поддерживает рекурсию (где подставленные строки содержат {n} ссылки).
  • Не всегда найдёт соответствие (или правильное соответствие), если какая-то часть парсинга неоднозначна. Например, если шаблон "{1},{2}" используется со строковыми аргументами {"a,b", "c"}, он отформатируется как "a,b,c". При парсинге результата, он вернёт {"a", "b,c"}.
  • Если один и тот же аргумент анализируется более одного раза в строке, то последний парсинг побеждает.
При неудачном парсинге используйте ParsePosition.getErrorIndex() для определения места в строке, где парсинг завершился неудачно. Возвращаемый индекс ошибки — это начальный смещение подшаблонов, с которыми строка сравнивается. Например, если строка парсинга "AAA {0} BBB" сравнивается с шаблоном "AAD {0} BBB", индекс ошибки равен 0. При возникновении ошибки вызов этого метода вернёт null. Если исходная строка равна null, вернёт пустой массив.
Параметры:
source - строка для парсинга
pos - позиция парсинга
Возвращает:
массив распарсенных объектов
Выбрасывает:
NullPointerException - если pos равен null для не-null строки source

разбирать

public Object[] parse(String source) throws ParseException
Парсит текст с начала заданной строки, чтобы получить массив объектов. Метод может не использовать весь текст заданной строки.

См. метод parse(String, ParsePosition) для получения дополнительной информации о парсинге сообщений.

Параметры:
source - строка, начало которой необходимо распарсить.
Возвращает:
Массив объектов, распарсенный из строки.
Выбрасывает:
ParseException - если начало указанной строки не может быть распарсено.

parseObject

public Object parseObject(String source, ParsePosition pos)
Парсит текст из строки, чтобы получить массив объектов.

Метод пытается распарсить текст, начиная с индекса, заданного pos. Если парсинг удался, то индекс pos обновляется до индекса после последнего используемого символа (парсинг не обязательно использует все символы до конца строки), и возвращается массив распарсенных объектов. Обновлённый pos может быть использован для указания начальной точки для следующего вызова этого метода. Если произошла ошибка, то индекс pos не изменяется, индекс ошибки pos устанавливается в индекс символа, где произошла ошибка, и возвращается null.

См. метод parse(String, ParsePosition) для получения дополнительной информации о парсинге сообщений.

Определено в:
parseObject в классе Format
Параметры:
source - Строка, часть которой необходимо распарсить.
pos - Объект ParsePosition с информацией об индексе и индексе ошибки, как описано выше.
Возвращает:
Массив распарсенных из строки объектов. В случае ошибки возвращает null.
Выбрасывает:
NullPointerException - если pos равен null.

clone

public Object clone()
Создаёт и возвращает копию этого объекта.
Overrides:
clone in class Format
Returns:
клонированный экземпляр этого объекта.
See Also:
  • Cloneable

equals

public boolean equals(Object obj)
Сравнение на равенство двух объектов формата сообщения
Overrides:
equals in class Object
Parameters:
obj - эталонный объект, с которым следует сравнить.
Returns:
true если этот объект идентичен аргументу obj; false в противном случае.
See Also:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Генерирует хэш-код для объекта формата сообщения.
Overrides:
hashCode in class Object
Returns:
значение хэш-кода для этого объекта.
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

© 1993, 2023, 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/21/docs/api/java.base/java/text/MessageFormat.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API