Класс CompoundName
- java.lang.Object
-
- javax.naming.CompoundName
- Все реализованные интерфейсы:
- Serializable, Cloneable, Comparable<Object>, Имя
public class CompoundName extends Object implements Name
Этот класс представляет составное имя — имя из иерархического пространства имён. Каждый компонент составного имени является атомным именем.
Компоненты составного имени пронумерованы. Индексы составного имени с N компонентами варьируются от 0 до N (не включая 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 javax.naming.NameImpl |
impl Реализация этого составного имени. |
protected Properties |
mySyntax Свойства синтаксиса для этого составного имени. |
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
CompoundName(Enumeration<String> comps,
Properties syntax) Создаёт новый экземпляр составного имени, используя компоненты, указанные в comps и синтаксисе. |
CompoundName(String n,
Properties syntax) Создаёт новый экземпляр составного имени путём разбора строки n с использованием синтаксиса, заданного предоставленными свойствами синтаксиса. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
Name |
add(int posn,
String comp) Добавляет один компонент в указанную позицию в этом составном имени. |
Name |
add(String comp) Добавляет один компонент в конец этого составного имени. |
Name |
addAll(int posn,
Name n) Добавляет компоненты составного имени — в порядке — в указанную позицию в этом составном имени. |
Name |
addAll(Name suffix) Добавляет компоненты составного имени — в порядке — в конец этого составного имени. |
Object |
clone() Создаёт копию этого составного имени. |
int |
compareTo(Object obj) Сравнивает это CompoundName с указанным объектом для определения порядка. |
boolean |
endsWith(Name n) Определяет, является ли составное имя суффиксом этого составного имени. |
boolean |
equals(Object obj) Определяет, равен ли obj по синтаксису этому составному имени. |
String |
get(int posn) Возвращает компонент этого составного имени. |
Enumeration<String> |
getAll() Возвращает компоненты этого составного имени как перечисление строк. |
Name |
getPrefix(int posn) Создаёт составное имя, компоненты которого представляют собой префикс компонентов в этом составном имени. |
Name |
getSuffix(int posn) Создаёт составное имя, компоненты которого представляют собой суффикс компонентов в этом составном имени. |
int |
hashCode() Вычисляет хэш-код этого составного имени. |
boolean |
isEmpty() Определяет, пусто ли это составное имя. |
Object |
remove(int posn) Удаляет компонент из этого составного имени. |
int |
size() Возвращает количество компонентов в этом составном имени. |
boolean |
startsWith(Name n) Определяет, является ли составное имя префиксом этого составного имени. |
String |
toString() Генерирует строковое представление этого составного имени, используя правила синтаксиса составного имени. |
Методы, унаследованные от класса java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait Поля
impl
protected transient javax.naming.NameImpl impl
Реализация этого составного имени. Это поле инициализируется конструкторами и не может быть null. Подклассы должны рассматривать его как неизменяемое переменную.
mySyntax
protected transient Properties mySyntax
Свойства синтаксиса для этого составного имени. Это поле инициализируется конструкторами и не может быть null. Подклассы должны рассматривать его как неизменяемое переменную. Любые необходимые изменения в mySyntax должны вноситься внутри конструкторов, а не после того, как составное имя было создано.
Конструкторы
CompoundName
protected CompoundName(Enumeration<String> comps,
Properties syntax) Создаёт новый экземпляр составного имени, используя компоненты, указанные в comps и синтаксисе. Этот защищённый метод предназначен для использования подклассами CompoundName, когда они переопределяют методы, такие как clone(), getPrefix(), getSuffix().
- Parameters:
-
comps- Непустой перечисление компонентов для добавления. Каждый элемент перечисления является объектом класса String. Перечисление будет использовано для извлечения своих элементов. -
syntax- Непустые свойства, определяющие синтаксис этого составного имени. Содержимое свойств см. в описании класса.
CompoundName
public CompoundName(String n,
Properties syntax)
throws InvalidNameException Создаёт новый экземпляр составного имени, анализируя строку n с использованием синтаксиса, определённого свойствами синтаксиса.
- Parameters:
-
n- Непустая строка для анализа. -
syntax- Непустой список свойств, определяющих синтаксис этого составного имени. Содержимое свойств см. в описании класса. - Throws:
-
InvalidNameException- Если 'n' нарушает синтаксис, определённыйsyntax.
Методы
toString
public String toString()
Генерирует строковое представление этого составного имени, используя правила синтаксиса составного имени. Правила синтаксиса описаны в описании класса. Пустой компонент представляется пустой строкой. Таким образом сгенерированное строковое представление можно передать в конструктор CompoundName с теми же свойствами синтаксиса для создания нового эквивалентного составного имени.
- Overrides:
-
toStringв классеObject - Returns:
- Непустое строковое представление этого составного имени.
equals
public boolean equals(Object obj)
Определяет, является ли obj синтаксически равным этому составному имени. Если obj равен null или не является CompoundName, возвращается false. Два составных имени равны, если каждый компонент одного равен соответствующему компоненту другого.
Равенство также определяется в терминах синтаксиса этого составного имени. По умолчанию CompoundName использует свойства синтаксиса jndi.syntax.ignorecase и jndi.syntax.trimblanks при сравнении двух компонентов на равенство. Если регистр игнорируется, две строки с одной и той же последовательностью символов, но с разными регистрами, считаются равными. Если пробелы обрезаются, ведущие и хвостовые пробелы игнорируются для целей сравнения.
Оба составных имени должны иметь одинаковое количество компонентов.
Примечание к реализации: В настоящее время свойства синтаксиса двух составных имён не сравниваются на равенство. Это может быть сделано в будущем.
- Overrides:
-
equalsв классеObject - Parameters:
-
obj- Возможно null объект для сравнения. - Returns:
- true, если obj равен этому составному имени, в противном случае false.
- See Also:
compareTo(java.lang.Object obj)
hashCode
public int hashCode()
Вычисляет хэш-код этого составного имени. Хэш-код является суммой хэш-кодов «канонизированных» форм отдельных компонентов этого составного имени. Каждый компонент «канонизируется» в соответствии с синтаксисом составного имени перед вычислением его хэш-кода. Например, для имени, нечувствительного к регистру, верхний регистр имени имеет тот же хэш-код, что и его эквивалент в нижнем регистре.
- Overrides:
-
hashCodeв классеObject - Returns:
- Целое число, представляющее хэш-код этого имени.
- See Also:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
clone
public Object clone()
Создаёт копию этого составного имени. Изменения компонентов этого составного имени не повлияют на новую копию, и наоборот. Клон и это составное имя используют один и тот же синтаксис.
- Specified by:
-
cloneв интерфейсеName - Overrides:
-
cloneв классеObject - Returns:
- Непустая копия этого составного имени.
- See Also:
Cloneable
compareTo
public int compareTo(Object obj)
Сравнивает этот CompoundName с заданным объектом для определения порядка. Возвращает отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше, равен или больше этот объект, чем заданный объект.
Если obj равен null или не является экземпляром CompoundName, выбрасывается ClassCastException.
См. equals(), чтобы узнать, что означают два составных имени для равенства. Если два составных имени равны, возвращается 0.
Порядок составных имён зависит от синтаксиса составного имени. По умолчанию они следуют лексикографическим правилам для сравнения строк с расширением, которое применяется ко всем компонентам составного имени, и сравнение отдельных компонентов зависит от свойств jndi.syntax.ignorecase и jndi.syntax.trimblanks, аналогично тому, как они влияют на equals(). Если это составное имя «лексикографически» меньше obj, возвращается отрицательное число. Если это составное имя «лексикографически» больше obj, возвращается положительное число.
Примечание к реализации: В настоящее время свойства синтаксиса двух составных имён не сравниваются при проверке порядка. Это может быть сделано в будущем.
- Specified by:
-
compareToв интерфейсеComparable<Object> - Specified by:
-
compareToв интерфейсеName - Parameters:
-
obj- Непустой объект для сравнения. - Returns:
- отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше, равен или больше этот объект, чем заданный объект.
- Throws:
-
ClassCastException- если obj не является CompoundName. - See Also:
equals(java.lang.Object)
size
public int size()
Возвращает количество компонентов в этом составном имени.
- Specified by:
-
sizeв интерфейсеName - Returns:
- Неотрицательное количество компонентов в этом составном имени.
isEmpty
public boolean isEmpty()
Определяет, является ли это составное имя пустым. Составное имя пусто, если у него ноль компонентов.
- Specified by:
-
isEmptyв интерфейсеName - Returns:
- true, если это составное имя пусто, в противном случае false.
getAll
public Enumeration<String> getAll()
Возвращает компоненты этого составного имени как перечисление строк. Эффекты обновлений этого составного имени на это перечисление не определены.
- Specified by:
-
getAllв интерфейсеName - Returns:
- Непустое перечисление компонентов этого составного имени. Каждый элемент перечисления имеет тип String.
get
public String get(int posn)
Возвращает компонент этого составного имени.
- Specified by:
-
getв интерфейсеName - Parameters:
-
posn- Индекс компонента для извлечения (от 0 до size() - 1). - Returns:
- Компонент по индексу posn.
- Throws:
-
ArrayIndexOutOfBoundsException- если posn находится вне указанного диапазона.
getPrefix
public Name getPrefix(int posn)
Создаёт составное имя, компоненты которого являются префиксом компонентов в этом составном имени. Результат и это составное имя используют один и тот же синтаксис. Последующие изменения в этом составном имени не влияют на возвращаемое имя и наоборот.
- Specified by:
-
getPrefixв интерфейсеName - Parameters:
-
posn- Индекс компонента для остановки (от 0 до size()). - Returns:
- Составное имя, состоящее из компонентов с индексами в диапазоне [0, posn).
- Throws:
-
ArrayIndexOutOfBoundsException- если posn находится вне указанного диапазона.
getSuffix
public Name getSuffix(int posn)
Создаёт составное имя, компоненты которого являются суффиксом компонентов в этом составном имени. Результат и это составное имя используют один и тот же синтаксис. Последующие изменения в этом составном имени не влияют на возвращаемое имя.
- Specified by:
-
getSuffixв интерфейсеName - Parameters:
-
posn- Индекс компонента для начала (от 0 до size()). - Returns:
- Составное имя, состоящее из компонентов с индексами в диапазоне [posn, size()). Если posn равно size(), возвращается пустое составное имя.
- Throws:
-
ArrayIndexOutOfBoundsException- если posn находится вне указанного диапазона.
startsWith
public boolean startsWith(Name n)
Определяет, является ли составное имя n префиксом этого составного имени. Составное имя n является префиксом, если оно равно getPrefix(n.size()) — другими словами, это составное имя начинается с n. Если n равно null или не является составным именем, возвращается false.
Примечание к реализации: В настоящее время свойства синтаксиса n не используются при сравнении.
- Specified by:
-
startsWithв интерфейсеName - Parameters:
-
n- Возможно null составное имя для проверки. - Returns:
- true, если n является составным именем и является префиксом этого составного имени, в противном случае false.
endsWith
public boolean endsWith(Name n)
Определяет, является ли составное имя суффиксом этого составного имени. Составное имя 'n' является суффиксом, если оно равно getSuffix(size()-n.size()) — другими словами, это составное имя заканчивается на 'n'. Если n равно null или не является составным именем, возвращается false.
Примечание по реализации: в настоящее время синтаксические свойства n не используются при сравнении. В будущем они могут быть использованы.
- Указано в:
-
endsWithв интерфейсеName - Параметры:
-
n- Возможно пустое составное имя для проверки. - Возвращает:
- true, если n является CompoundName и является суффиксом этого составного имени, в противном случае false.
addAll
public Name addAll(Name suffix)
throws InvalidNameException Добавляет компоненты составного имени — в порядке следования — в конец этого составного имени.
Примечание по реализации: в настоящее время синтаксические свойства суффикса не используются или не проверяются. В будущем они могут быть использованы.
- Указано в:
-
addAllв интерфейсеName - Параметры:
-
suffix- Компоненты, которые нужно добавить. - Возвращает:
- Обновленное составное имя, а не новое. Не может быть null.
- Исключения:
-
InvalidNameException- Если suffix не является составным именем или добавление компонентов нарушает синтаксис этого составного имени (например, превышает количество компонентов).
addAll
public Name addAll(int posn,
Name n)
throws InvalidNameException Добавляет компоненты составного имени — в порядке следования — в указанную позицию внутри этого составного имени. Компоненты этого составного имени в позиции или после индекса первого нового компонента сдвигаются вверх (относительно индекса 0), чтобы вместить новые компоненты.
Примечание по реализации: в настоящее время синтаксические свойства суффикса не используются или не проверяются. В будущем они могут быть использованы.
- Указано в:
-
addAllв интерфейсеName - Параметры:
-
n- Компоненты, которые нужно добавить. -
posn- Индекс в этом имени, в котором нужно добавить новые компоненты. Должен находиться в диапазоне [0, size()]. - Возвращает:
- Обновленное составное имя, а не новое. Не может быть null.
- Исключения:
-
ArrayIndexOutOfBoundsException- Если posn находится вне заданного диапазона. -
InvalidNameException- Если n не является составным именем или добавление компонентов нарушает синтаксис этого составного имени (например, превышает количество компонентов).
add
public Name add(String comp)
throws InvalidNameException Добавляет один компонент в конец этого составного имени.
- Указано в:
-
addв интерфейсеName - Параметры:
-
comp- Компонент, который нужно добавить. - Возвращает:
- Обновленное составное имя, а не новое. Не может быть null.
- Исключения:
-
InvalidNameException- Если добавление comp в конец имени нарушает синтаксис составного имени.
add
public Name add(int posn,
String comp)
throws InvalidNameException Добавляет один компонент в указанную позицию внутри этого составного имени. Компоненты этого составного имени в позиции или после индекса нового компонента сдвигаются вверх на единицу (относительно индекса 0), чтобы вместить новый компонент.
- Указано в:
-
addв интерфейсеName - Параметры:
-
comp- Компонент, который нужно добавить. -
posn- Индекс, в который нужно добавить новый компонент. Должен находиться в диапазоне [0, size()]. - Возвращает:
- Обновленное составное имя, а не новое. Не может быть null.
- Исключения:
-
ArrayIndexOutOfBoundsException- Если posn находится вне заданного диапазона. -
InvalidNameException- Если добавление comp в указанную позицию нарушит синтаксис составного имени.
remove
public Object remove(int posn)
throws InvalidNameException Удаляет компонент из этого составного имени. Компонент этого составного имени в позиции 'posn' удаляется, а компоненты с индексами больше 'posn' сдвигаются вниз (в сторону индекса 0) на единицу.
- Указано в:
-
removeв интерфейсеName - Параметры:
-
posn- Индекс компонента, который нужно удалить. Должен находиться в диапазоне [0, size()). - Возвращает:
- Удаленный компонент (строка).
- Исключения:
-
ArrayIndexOutOfBoundsException- Если posn находится вне заданного диапазона (включая случай, когда составное имя пустое). -
InvalidNameException- Если удаление компонента нарушит синтаксис составного имени.
© 1993, 2020, 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.