Класс 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:
number
dtf_date
dtf_time
dtf_datetime
pre-defined DateTimeFormatter(s)
date
time
choice
list
FormatStyle:
short
medium
long
full
integer
currency
percent
compact_short
compact_long
or
unit
SubformatPattern
Значение ArgumentIndex — это неотрицательное целое число, записанное цифрами от '0' до '9', которое представляет собой индекс в массиве arguments, переданном методам format, или в результирующем массиве, возвращаемом методами parse.
Любой конструктор или метод, принимающий параметр-шаблон String, выбрасывает IllegalArgumentException, если шаблон содержит значение ArgumentIndex, равное или превышающее ограничение реализации.
Значения FormatType и FormatStyle используются для создания экземпляра Format для элемента формата. В следующей таблице показано, как значения сопоставляются с экземплярами Format. При передаче в applyPattern(String) регистр этих значений не учитывается. Комбинации, не указанные в таблице, недопустимы. SubformatPattern должен быть допустимой строкой шаблона для используемого подкласса Format.
- Примечание по реализации:
- В эталонной реализации ограничение
ArgumentIndexсоставляет 10 000.Правила экранирования в шаблонах
Внутри String пару одинарных кавычек можно использовать для заключения в кавычки любых символов, кроме одинарных кавычек. Например, строка шаблона
"'{0}'"представляет строку"{0}", а не FormatElement. Одна одинарная кавычка должна быть представлена двумя одинарными кавычками''на протяжении всей String. Например, строка шаблона"'{''}'"интерпретируется как последовательность из'{(начала экранирования и открывающей фигурной скобки),''(одинарной кавычки) и}'(закрывающей фигурной скобки и конца экранирования), а не как'{'и'}'(экранированных открывающей и закрывающей фигурных скобок): она представляет строку"{'}", а не"{}".SubformatPattern интерпретируется соответствующим подформатом, при этом применяются правила шаблонов, зависящие от подформата. Например, строка шаблона
"{1,number,$'#',##}"(SubformatPattern с подчёркиванием) создаст числовой формат, в котором знак решётки заключён в кавычки, с результатом вроде"$#31,45". Подробности см. в документации соответствующего подклассаFormat.Любая незакрытая кавычка считается закрытой в конце заданного шаблона. Например, строка шаблона
"'{0}"рассматривается как шаблон"'{0}'".Все фигурные скобки в шаблоне, не заключённые в кавычки, должны быть сбалансированы. Например,
"ab {0} de"и"ab '}' de"— допустимые шаблоны, а"ab {0'}' de","ab } de"и"''{''"— нет.- Предупреждение:
- Правила использования кавычек в шаблонах формата сообщений, к сожалению, оказались несколько запутанными. В частности, локализаторам не всегда очевидно, нужно ли удваивать одинарные кавычки. Обязательно сообщите локализаторам об этих правилах и укажите им (например, с помощью комментариев в исходных файлах пакетов ресурсов), какие строки будут обрабатываться
MessageFormat. Обратите внимание, что в переведённых строках локализаторам может потребоваться использовать одинарные кавычки, даже если в исходном варианте их нет.
Информация об использовании
В следующем примере показано общее использование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 GregorianCalendar(2053, Calendar.JULY, 3, 12, 30).getTime(), event);resultвозвращает следующее:At 12:30:00 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
Для более сложных шаблонов можно использовать
ChoiceFormatвместе сMessageFormat, чтобы правильно формировать формы единственного и множественного числа:MessageFormat msgFmt = new MessageFormat("The disk \"{0}\" contains {1,choice,0#no files|1#one file|1< {1,number,integer} files}."); Object[] args = {"MyDisk", fileCount}; String result = msgFmt.format(args);resultс различными значениямиfileCountвозвращает следующее:The disk "MyDisk" contains no files. The disk "MyDisk" contains one file. The disk "MyDisk" contains 1,273 files.
Примечания: Как видно из предыдущего фрагмента, строка, созданная
ChoiceFormatвMessageFormat, обрабатывается особым образом: вхождения «{» используются для обозначения подформатов и вызывают рекурсивную обработку. Если в шаблонеChoiceFormatопределёнFormatElement, он будет отформатирован только в соответствии с предоставленными шаблонамиFormatTypeиFormatStyle. Связанные подформаты объектаMessageFormatверхнего уровня не будут применены кFormatElement, определённому в шаблонеChoiceFormat. Если вы создаёте программно иMessageFormat, иChoiceFormat(вместо использования строковых шаблонов), следите за тем, чтобы не создать формат, рекурсивно ссылающийся на себя, поскольку это приведёт к бесконечному циклу.Форматирование даты и времени
MessageFormat предоставляет шаблоны, поддерживающие форматировщики даты и времени из пакетовjava.time.formatиjava.text. Рассмотрим следующие три примера с датой 16.11.2023:1) шаблон date
FormatTypeс параметром fullFormatStyle,Object[] arg = {new GregorianCalendar(2023, Calendar.NOVEMBER, 16).getTime()}; var fmt = new MessageFormat("The date was {0,date,full}"); fmt.format(arg); // returns "The date was Thursday, November 16, 2023"2) шаблон dtf_date
FormatTypeс параметром fullFormatStyle,Object[] arg = {LocalDate.of(2023, 11, 16)}; var fmt = new MessageFormat("The date was {0,dtf_date,full}"); fmt.format(arg); // returns "The date was Thursday, November 16, 2023"3) шаблон ISO_LOCAL_DATE
FormatType,Object[] arg = {LocalDate.of(2023, 11, 16)}; var fmt = new MessageFormat("The date was {0,ISO_LOCAL_DATE}"); fmt.format(arg); // returns "The date was 2023-11-16"Разбор
Если один аргумент разбирается в строке более одного раза, последним результатом разбора будет последнее совпадение. Например:
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")}Синхронизация
Форматы сообщений не являются синхронизированными. Рекомендуется создавать отдельные экземпляры формата для каждого потока. Если несколько потоков одновременно обращаются к одному формату, необходимо обеспечить внешнюю синхронизацию.
- Появился в версии:
- 1.1
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
MessageFormat.Field |
Определяет константы, используемые в качестве ключей атрибутов в AttributedCharacterIterator, возвращаемом MessageFormat.formatToCharacterIterator. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
MessageFormat |
Создаёт MessageFormat для указанной локали FORMAT по умолчанию и заданного шаблона. |
MessageFormat |
Создаёт MessageFormat для заданных локали и шаблона. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
applyPattern |
Задаёт шаблон, используемый этим форматом сообщений. |
Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Сравнивает заданный объект с этим MessageFormat на равенство. |
final StringBuffer |
format |
Форматирует массив объектов и добавляет шаблон MessageFormat, заменяя элементы формата отформатированными объектами, в предоставленный StringBuffer. |
final StringBuffer |
format |
Форматирует массив объектов и добавляет шаблон MessageFormat, заменяя элементы формата отформатированными объектами, в предоставленный StringBuffer. |
static String |
format |
Создаёт MessageFormat с заданным шаблоном и использует его для форматирования заданных аргументов. |
AttributedCharacterIterator |
formatToCharacterIterator |
Форматирует массив объектов и вставляет их в шаблон MessageFormat, формируя AttributedCharacterIterator. |
Format[] |
getFormats() |
Возвращает форматы, используемые для элементов формата в ранее заданной строке шаблона. |
Format[] |
getFormatsByArgumentIndex() |
Возвращает форматы, используемые для значений, переданных методам format или возвращённых методами parse. |
Locale |
getLocale() |
Возвращает локаль, используемую при создании или сравнении подформатов. |
int |
hashCode() |
Возвращает значение хеш-кода для этого MessageFormat. |
Object[] |
parse |
Разбирает текст с начала заданной строки и формирует массив объектов. |
Object[] |
parse |
Разбирает строку. |
Object |
parseObject |
Разбирает текст из строки и формирует массив объектов. |
void |
setFormat |
Задаёт формат, используемый для элемента формата с указанным индексом в ранее заданной строке шаблона. |
void |
setFormatByArgumentIndex |
Задаёт формат, используемый для элементов формата в ранее заданной строке шаблона, которым соответствует указанный индекс аргумента. |
void |
setFormats |
Задаёт форматы, используемые для элементов формата в ранее заданной строке шаблона. |
void |
setFormatsByArgumentIndex |
Задаёт форматы, используемые для значений, переданных методам format или возвращённых методами parse. |
void |
setLocale |
Задаёт локаль, используемую при создании или сравнении подформатов. |
String |
toPattern() |
Возвращает строку шаблона String, соответствующую patterns section и представляющую текущее состояние этого MessageFormat. |
String |
toString() |
Возвращает строку, идентифицирующую этот MessageFormat, для отладки. |
Методы, объявленные в классе Format
format, parseObject
Подробное описание конструкторов
MessageFormat
public MessageFormat(String pattern)
FORMAT и заданного шаблона. Конструктор сначала задает локаль, затем разбирает шаблон и создает список подформатов для содержащихся в нем элементов формата. Шаблоны и их интерпретация описаны в описании класса.- Параметры:
-
pattern— шаблон для этого формата сообщения - Исключения:
-
IllegalArgumentException— если шаблон недопустим -
NullPointerException— еслиpatternравноnull
MessageFormat
public MessageFormat(String pattern, Locale locale)
- Требования к реализации:
- Реализация по умолчанию выбрасывает
NullPointerException, еслиlocaleравноnullлибо при создании объектаMessageFormat, либо позже, когда методformat()вызывается экземпляромMessageFormatс нулевой локалью, а реализация использует подформат, зависящий от локали. - Параметры:
-
pattern— шаблон для этого формата сообщения -
locale— локаль для этого формата сообщения - Исключения:
-
IllegalArgumentException— если шаблон недопустим -
NullPointerException— еслиpatternравноnullилиlocaleравноnull, а реализация использует подформат, зависящий от локали. - С момента:
- 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()
patterns section и отражающий текущее состояние этого MessageFormat. Строка создается на основе внутренних данных и поэтому не обязательно совпадает с ранее примененным шаблоном. Порядок сопоставления FormatStyle не гарантируется. То есть полученный
FormatStyle может не быть эквивалентен соответствующему переданному стилю, если несколько стилей эквивалентны.- Требования к реализации:
- Реализация в
MessageFormatвозвращает строку, которая при передаче конструкторуMessageFormat()или методуapplyPattern()создает экземпляр, семантически эквивалентный этому экземпляру. Если подформат невозможно преобразовать в строковый шаблон,FormatTypeиFormatStyleбудут исключены изFormatElement. - Возвращает:
- строковый шаблон, соответствующий
patterns sectionи отражающий текущее состояние этогоMessageFormat
setFormatsByArgumentIndex
public void setFormatsByArgumentIndex(Format[] newFormats)
format или возвращаемых методами parse. Индексы элементов в newFormats соответствуют индексам аргументов, используемым в ранее заданной строке шаблона. Поэтому порядок форматов в newFormats соответствует порядку элементов в массиве arguments, передаваемом методам format, или массиве результатов, возвращаемом методами parse. Если индекс аргумента используется более чем для одного элемента формата в строке шаблона, соответствующий новый формат применяется ко всем таким элементам формата. Если индекс аргумента не используется ни для одного элемента формата в строке шаблона, соответствующий новый формат игнорируется. Если форматов предоставлено меньше, чем требуется, заменяются только форматы для индексов аргументов, меньших newFormats.length.
- Параметры:
-
newFormats— новые форматы - Исключения:
-
NullPointerException— еслиnewFormatsравно null - С момента:
- 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— новый формат - С момента:
- 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.
- Возвращает:
- форматы, используемые для аргументов шаблона
- С момента:
- 1.4
getFormats
public Format[] getFormats()
Поскольку при локализации порядок элементов формата в строке шаблона часто меняется, обычно лучше использовать метод getFormatsByArgumentIndex, который предполагает, что порядок форматов соответствует порядку элементов в массиве arguments, передаваемом методам format, или массиве результатов, возвращаемом методами parse.
- Возвращает:
- форматы, используемые для элементов формата в шаблоне
format
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 ? |
!= 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, а реализация использует подформат, зависящий от локали.
format
public static String format(String pattern, Object... arguments)
(new MessageFormat(pattern)).format(arguments, new StringBuffer(), null).toString()
- Параметры:
-
pattern— строка шаблона -
arguments— объект или объекты для форматирования - Возвращает:
- форматированную строку
- Исключения:
-
IllegalArgumentException— если шаблон недопустим или аргумент в массивеargumentsимеет тип, не ожидаемый элементом (элементами) формата, в котором он используется. -
NullPointerException— еслиpatternравноnull
format
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
parse
public Object[] parse(String source, ParsePosition pos)
Предупреждения: разбор может завершиться неудачей по ряду причин. Например:
- Если один из аргументов не встречается в шаблоне.
- Если формат аргумента теряет информацию, например при использовании формата выбора, когда большое число форматируется как "many".
- Рекурсивный разбор пока не поддерживается (когда подставленные строки содержат ссылки вида {n}).
- Совпадение (или правильное совпадение) находится не всегда, если какая-либо часть разбираемого текста неоднозначна. Например, если для аргументов-строк {"a,b", "c"} используется шаблон "{1},{2}", результатом форматирования будет "a,b,c". При разборе результата будет возвращено {"a", "b,c"}.
- Если один аргумент разбирается в строке несколько раз, результатом будет последний разбор.
- Параметры:
-
source— строка для разбора -
pos— позиция разбора - Возвращает:
- массив разобранных объектов
- Исключения:
-
NullPointerException— еслиposравноnullдля ненулевой строкиsource.
parse
public Object[] parse(String source) throws ParseException
Дополнительные сведения о разборе сообщений см. в методе parse(String, ParsePosition).
- Параметры:
-
source—String, начало которого следует разобрать. - Возвращает:
- массив
Object, полученный при разборе строки. - Исключения:
-
ParseException— если начало заданной строки невозможно разобрать.
parseObject
public Object parseObject(String source, ParsePosition pos)
Метод пытается разобрать текст, начиная с индекса, заданного в pos. Если разбор выполняется успешно, индекс pos обновляется до позиции после последнего использованного символа (при разборе могут быть использованы не все символы до конца строки), и возвращается разобранный массив объектов. Обновленный pos можно использовать, чтобы указать начальную позицию для следующего вызова этого метода. При возникновении ошибки индекс pos не меняется, индекс ошибки pos устанавливается в позицию символа, на котором произошла ошибка, и возвращается null.
Дополнительные сведения о разборе сообщений см. в методе parse(String, ParsePosition).
- Определено в:
-
parseObjectв классеFormat - Параметры:
-
source—String, часть которого следует разобрать. -
pos— объектParsePositionс индексом и сведениями об индексе ошибки, как описано выше. - Возвращает:
- массив
Object, полученный при разборе строки. В случае ошибки возвращается null. - Исключения:
-
NullPointerException— еслиposравно null.
clone
equals
public boolean equals(Object obj)
MessageFormat на равенство. Возвращает true, если объект также является MessageFormat и оба формата одинаково форматируют любое значение.- Переопределяет:
-
equalsв классеObject - Требования к реализации:
- Этот метод проверяет равенство, определяя идентичность класса на основе
getClass(), а неinstanceof. Поэтому в методах equals подклассов ни один экземпляр этого класса не должен считаться равным экземпляру подкласса. - Параметры:
-
obj— объект для сравнения на равенство - Возвращает:
-
true, если указанный объект равен этомуMessageFormat - См. также:
hashCode
public int hashCode()
MessageFormat.- Переопределяет:
-
hashCodeв классеObject - Требования к реализации:
- Этот метод вычисляет хеш-код, используя значение, возвращаемое методом
toPattern(). - Возвращает:
- хеш-код этого
MessageFormat - См. также:
toString
© 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/MessageFormat.html