Класс CompoundName
- Все реализуемые интерфейсы:
Serializable, Cloneable, Comparable<Object>, Name
public class CompoundName extends Object implements Name
Компоненты составного имени нумеруются. Индексы составного имени из N компонентов находятся в диапазоне от 0 включительно до 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, и синтаксиса, заданного в syntax. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Name |
add |
Добавляет один компонент в заданную позицию этого составного имени. |
Name |
add |
Добавляет один компонент в конец этого составного имени. |
Name |
addAll |
Добавляет компоненты составного имени по порядку в заданную позицию этого составного имени. |
Name |
addAll |
Добавляет компоненты составного имени по порядку в конец этого составного имени. |
Object |
clone() |
Создаёт копию этого составного имени. |
int |
compareTo |
Сравнивает это CompoundName с указанным Object для определения порядка. |
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— Ненулевой объект для сравнения. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, если это Name меньше, равно или больше заданного Object соответственно.
- Исключения:
-
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— Ненулевые компоненты для добавления. - Возвращает:
- Обновлённый CompoundName, а не новый объект. Не может быть null.
- Исключения:
-
InvalidNameException— Если suffix не является составным именем или добавление компонентов нарушает синтаксис этого составного имени (например, превышает допустимое количество компонентов).
addAll
public Name addAll(int posn, Name n) throws InvalidNameException
Примечание по реализации: в настоящее время свойства синтаксиса суффикса не используются и не проверяются. В будущем это может измениться.
- Определено в:
-
addAllв интерфейсеName - Параметры:
-
posn— Индекс этого имени, в который следует добавить новые компоненты. Должен находиться в диапазоне [0,size()]. -
n— Ненулевые компоненты для добавления. - Возвращает:
- Обновлённый CompoundName, а не новый объект. Не может быть null.
- Исключения:
-
ArrayIndexOutOfBoundsException— Если posn находится за пределами указанного диапазона. -
InvalidNameException— Если n не является составным именем или добавление компонентов нарушает синтаксис этого составного имени (например, превышает допустимое количество компонентов).
add
public Name add(String comp) throws InvalidNameException
- Определено в:
-
addв интерфейсеName - Параметры:
-
comp— Ненулевой компонент для добавления. - Возвращает:
- Обновлённый CompoundName, а не новый объект. Не может быть null.
- Исключения:
-
InvalidNameException— Если добавление comp в конец имени нарушает синтаксис составного имени.
add
public Name add(int posn, String comp) throws InvalidNameException
- Определено в:
-
addв интерфейсеName - Параметры:
-
posn— Индекс для добавления нового компонента. Должен находиться в диапазоне [0,size()]. -
comp— Ненулевой компонент для добавления. - Возвращает:
- Обновлённый CompoundName, а не новый объект. Не может быть null.
- Исключения:
-
ArrayIndexOutOfBoundsException— Если posn находится за пределами указанного диапазона. -
InvalidNameException— Если добавление comp в указанную позицию нарушает синтаксис составного имени.
remove
public Object remove(int posn) throws InvalidNameException
- Определено в:
-
removeв интерфейсеName - Параметры:
-
posn— Индекс удаляемого компонента. Должен находиться в диапазоне [0,size()). - Возвращает:
- Удалённый компонент (String).
- Исключения:
-
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://docs.oracle.com/en/java/javase/25/docs/api/java.naming/javax/naming/CompoundName.html