Класс CompoundName
- Все реализованные интерфейсы:
-
Serializable,Cloneable,Comparable<Object>,Name
public class CompoundName extends Object implements Name
Компоненты составного имени пронумерованы. Индексы составного имени с N компонентами изменяются от 0 до N, но не включая N. Этот диапазон можно записать как [0, N). Наиболее значимый компонент находится по индексу 0. Пустое составное имя не имеет компонентов.
Синтаксис составного имени
Синтаксис составного имени задаётся набором свойств:- jndi.syntax.direction
- Направление для разбора ("right_to_left", "left_to_right", "flat"). Если не указано, по умолчанию используется "flat", что означает плоское пространство имён без иерархической структуры.
- jndi.syntax.separator
- Разделитель между компонентами атомного имени. Требуется, если направление не "flat".
- jndi.syntax.ignorecase
- Если присутствует, "true" означает игнорирование регистра при сравнении компонентов имени. Если его значение не "true", или если свойство не указано, регистр учитывается при сравнении компонентов имени.
- jndi.syntax.escape
- Если присутствует, задаёт строку экранирования для переопределения разделителей, экранирования и кавычек.
- jndi.syntax.beginquote
- Если присутствует, задаёт строку, определяющую начало цитируемой строки.
- jndi.syntax.endquote
- Строка, определяющая конец цитируемой строки. Если присутствует, задаёт строку, определяющую конец цитируемой строки. Если отсутствует, используется syntax.beginquote как конечная кавычка.
- jndi.syntax.beginquote2
- Альтернативный набор кавычек начала/конца.
- jndi.syntax.endquote2
- Альтернативный набор кавычек начала/конца.
- jndi.syntax.trimblanks
- Если присутствует, "true" означает обрезку всех начальных и конечных пробелов в компоненте имени для целей сравнения. Если его значение не "true", или если свойство не указано, пробелы учитываются.
- jndi.syntax.separator.ava
- Если присутствует, задаёт строку, разделяющую утверждения атрибут-значение, когда указываются несколько пар атрибут/значение. (например, "," в age=65,gender=male).
- jndi.syntax.separator.typeval
- Если присутствует, задаёт строку, разделяющую атрибут и значение (например, "=" в "age=65").
- В строке без кавычек или экранирования любой экземпляр разделителя отделяет два атомных имени. Каждое атомное имя называется компонентом.
- Разделитель, кавычка или экранирование экранируется, если ему непосредственно предшествует экранирование (слева).
- Если есть два набора кавычек, определённое начало кавычек должно быть сопоставлено соответствующему концу кавычек.
- Неэкранированная начальная кавычка, которая предшествует компоненту, должна быть сопоставлена с неэкранированной конечной кавычкой в конце компонента. Таким образом, цитируемый компонент называется цитируемым компонентом. Он анализируется путём удаления начальных и конечных кавычек и путём обработки промежуточных символов как обычных символов, если не применяется одно из правил, связанных с цитируемыми компонентами, перечисленными ниже.
- Кавычки, вставленные в нецитируемые компоненты, обрабатываются как обычные строки и не требуют сопоставления.
- Разделитель, который экранирован или появляется между неэкранированными кавычками, обрабатывается как обычная строка и не является разделителем.
- Строка экранирования внутри цитируемого компонента действует как экранирование только при следования за соответствующей конечной строкой кавычек. Это позволяет вставлять экранированную кавычку в цитируемый компонент.
- Экранированная строка экранирования не обрабатывается как строка экранирования.
- Строка экранирования, которая не предшествует метастроке (кавычки или разделитель) и не находится в конце компонента, обрабатывается как обычная строка.
- Ведущий разделитель (строка составного имени начинается с разделителя) обозначает ведущий пустой атомный компонент (состоящий из пустой строки). Конечный разделитель (строка составного имени заканчивается разделителем) обозначает конечный пустой атомный компонент. Смежные разделители обозначают пустой атомный компонент.
Строковая форма составного имени следует синтаксису, описанному выше. При преобразовании компонентов составного имени в их строковое представление применяются правила синтаксического резервирования, описанные выше (например, вставленные разделители экранируются или цитируются), чтобы при парсинге той же строки получались те же компоненты исходного составного имени.
Доступ в нескольких потоках
ЭкземплярCompoundName не синхронизирован против одновременного доступа в нескольких потоках. Несколько потоков, пытающихся получить доступ и изменить CompoundName, должны заблокировать объект.- С тех пор:
- 1.3
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected Properties |
mySyntax |
Свойства синтаксиса для этого составного имени. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
| Создаёт новый экземпляр составного имени, анализируя строку n с использованием синтаксиса, указанного в свойствах синтаксиса. |
||
protected |
Создаёт новый экземпляр составного имени, используя компоненты, указанные в comps и синтаксисе. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Name |
add |
Добавляет один компонент в указанную позицию в этом составном имени. |
Name |
add |
Добавляет один компонент в конец этого составного имени. |
Name |
addAll |
Добавляет компоненты составного имени — в порядке — в указанную позицию в этом составном имени. |
Name |
addAll |
Добавляет компоненты составного имени — в порядке — в конец этого составного имени. |
Object |
clone() |
Создаёт копию этого составного имени. |
int |
compareTo |
Сравнивает это CompoundName с указанным объектом по порядку. |
boolean |
endsWith |
Определяет, является ли составное имя суффиксом этого составного имени. |
boolean |
equals |
Определяет, является ли obj синтаксически равным этому составному имени. |
String |
get |
Извлекает компонент этого составного имени. |
Enumeration |
getAll() |
Возвращает компоненты этого составного имени как перечисление строк. |
Name |
getPrefix |
Создаёт составное имя, компоненты которого состоят из префикса компонентов в этом составном имени. |
Name |
getSuffix |
Создаёт составное имя, компоненты которого состоят из суффикса компонентов в этом составном имени. |
int |
hashCode() |
Вычисляет хэш-код этого составного имени. |
boolean |
isEmpty() |
Определяет, пусто ли это составное имя. |
Object |
remove |
Удаляет компонент из этого составного имени. |
int |
size() |
Возвращает количество компонентов в этом составном имени. |
boolean |
startsWith |
Определяет, является ли составное имя префиксом этого составного имени. |
String |
toString() |
Генерирует строковое представление этого составного имени, используя правила синтаксиса составного имени. |
Подробное описание полей
mySyntax
protected transient Properties mySyntax
Подробное описание конструкторов
CompoundName
protected CompoundName(Enumeration<String> comps, Properties syntax)
- Параметры:
-
comps- Непустой перечисление компонентов для добавления. Каждый элемент перечисления имеет тип String. Перечисление будет использовано для извлечения его элементов. -
syntax- Непустой набор свойств, определяющих синтаксис этого составного имени. См. описание класса для содержимого свойств.
CompoundName
public CompoundName(String n, Properties syntax) throws InvalidNameException
- Параметры:
-
n- Непустая строка для анализа. -
syntax- Непустой список свойств, определяющих синтаксис этого составного имени. См. описание класса для содержимого свойств. - Исключение:
-
InvalidNameException- Если 'n' нарушает синтаксис, заданныйsyntax.
Подробное описание методов
toString
public String toString()
equals
public boolean equals(Object obj)
Равенство также определяется в терминах синтаксиса этого составного имени. По умолчанию CompoundName использует свойства синтаксиса jndi.syntax.ignorecase и jndi.syntax.trimblanks при сравнении двух компонентов на равенство. Если регистр игнорируется, две строки с одинаковой последовательностью символов, но разным регистром, считаются равными. Если пробелы обрезаются, ведущие и хвостовые пробелы игнорируются для целей сравнения.
Оба составных имени должны иметь одинаковое количество компонентов.
Примечание к реализации: В настоящее время свойства синтаксиса двух составных имён не сравниваются на равенство. Возможно, это будет сделано в будущем.
hashCode
public int hashCode()
clone
public Object clone()
compareTo
public int compareTo(Object obj)
Если obj равен null или не является экземпляром CompoundName, выбрасывается ClassCastException.
См. equals() для того, что означает равенство двух составных имён. Если два составных имени равны, возвращается 0.
Порядок составных имён зависит от синтаксиса составного имени. По умолчанию они следуют лексикографическим правилам для сравнения строк с расширением, которое применяется ко всем компонентам составного имени и сравнение отдельных компонентов зависит от свойств jndi.syntax.ignorecase и jndi.syntax.trimblanks, аналогично тому, как они влияют на equals(). Если это составное имя «лексикографически» меньше obj, возвращается отрицательное число. Если это составное имя «лексикографически» больше obj, возвращается положительное число.
Примечание к реализации: В настоящее время свойства синтаксиса двух составных имён не сравниваются при проверке порядка. Возможно, это будет сделано в будущем.
- Определено в:
-
compareToв интерфейсеComparable<Object> - Определено в:
-
compareToв интерфейсеName - Параметры:
-
obj- Непустой объект для сравнения. - Возвращает:
- отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше ли, равно или больше ли это имя, чем заданный объект.
- Исключение:
-
ClassCastException- если obj не является CompoundName. - См. также:
size
isEmpty
getAll
public Enumeration<String> getAll()
get
public String get(int posn)
- Определено в:
-
getв интерфейсеName - Параметры:
-
posn- Индекс компонента для извлечения (отсчёт с 0). Должен находиться в диапазоне [0, size()). - Возвращает:
- Компонент по индексу posn.
- Исключение:
-
ArrayIndexOutOfBoundsException- если posn находится вне указанного диапазона.
getPrefix
public Name getPrefix(int posn)
- Определено в:
-
getPrefixв интерфейсеName - Параметры:
-
posn- Индекс компонента для остановки (отсчёт с 0). Должен находиться в диапазоне [0,size()]. - Возвращает:
- Составное имя, состоящее из компонентов в диапазоне [0, posn).
- Исключение:
-
ArrayIndexOutOfBoundsException- если posn находится вне указанного диапазона.
getSuffix
public Name getSuffix(int posn)
- Указано в:
-
getSuffixв интерфейсеName - Параметры:
-
posn- Индекс компонента, с которого нужно начать (нумерация с 0). Должен быть в диапазоне [0,size()]. - Возвращает:
- Составное имя, состоящее из компонентов с индексами в диапазоне [posn,size()). Если posn равно size(), возвращается пустое составное имя.
- Исключения:
-
ArrayIndexOutOfBoundsException- Если posn находится за пределами указанного диапазона.
startsWith
public boolean startsWith(Name n)
Примечание по реализации: В настоящее время свойства синтаксиса n не используются при сравнении. Они могут быть использованы в будущем.
- Указано в:
-
startsWithв интерфейсеName - Параметры:
-
n- Возможно null составное имя для проверки. - Возвращает:
- true, если n является CompoundName и является префиксом этого составного имени, в противном случае false.
endsWith
public boolean endsWith(Name n)
Примечание по реализации: В настоящее время свойства синтаксиса n не используются при сравнении. Они могут быть использованы в будущем.
addAll
public Name addAll(Name suffix) throws InvalidNameException
Примечание по реализации: В настоящее время свойства синтаксиса суффикса не используются или проверяются. Они могут быть использованы в будущем.
- Указано в:
-
addAllв интерфейсеName - Параметры:
-
suffix- Не null компоненты для добавления. - Возвращает:
- Обновлённое составное имя, а не новое. Не может быть null.
- Исключения:
-
InvalidNameException- Если suffix не является составным именем или добавление компонентов нарушает синтаксис этого составного имени (например, превышение количества компонентов).
addAll
public Name addAll(int posn, Name n) throws InvalidNameException
Примечание по реализации: В настоящее время свойства синтаксиса суффикса не используются или проверяются. Они могут быть использованы в будущем.
- Указано в:
-
addAllв интерфейсеName - Параметры:
-
posn- Индекс в этом имени, в который нужно добавить новые компоненты. Должен быть в диапазоне [0,size()]. -
n- Не null компоненты для добавления. - Возвращает:
- Обновлённое составное имя, а не новое. Не может быть null.
- Исключения:
-
ArrayIndexOutOfBoundsException- Если posn находится за пределами указанного диапазона. -
InvalidNameException- Если n не является составным именем или добавление компонентов нарушает синтаксис этого составного имени (например, превышение количества компонентов).
add
public Name add(String comp) throws InvalidNameException
- Указано в:
-
addв интерфейсеName - Параметры:
-
comp- Не null компонент для добавления. - Возвращает:
- Обновлённое составное имя, а не новое. Не может быть null.
- Исключения:
-
InvalidNameException- Если добавление comp в конец имени нарушает синтаксис составного имени.
add
public Name add(int posn, String comp) throws InvalidNameException
- Указано в:
-
addв интерфейсеName - Параметры:
-
posn- Индекс, в который нужно добавить новый компонент. Должен быть в диапазоне [0,size()]. -
comp- Не null компонент для добавления. - Возвращает:
- Обновлённое составное имя, а не новое. Не может быть null.
- Исключения:
-
ArrayIndexOutOfBoundsException- Если posn находится за пределами указанного диапазона. -
InvalidNameException- Если добавление comp в указанную позицию нарушает синтаксис составного имени.
remove
public Object remove(int posn) throws InvalidNameException
- Указано в:
-
removeв интерфейсеName - Параметры:
-
posn- Индекс компонента для удаления. Должен быть в диапазоне [0,size()). - Возвращает:
- Удаленный компонент (строка).
- Исключения:
-
ArrayIndexOutOfBoundsException- Если posn находится за пределами указанного диапазона (включая случай, когда составное имя пустое). -
InvalidNameException- Если удаление компонента нарушит синтаксис составного имени.
© 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://download.java.net/java/early_access/jdk24/docs/api/java.naming/javax/naming/CompoundName.html