Класс CompoundName
- java.lang.Object
-
- javax.naming.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 | Свойства синтаксиса для этого составного имени. |
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
CompoundName(String n,
Properties syntax) | Создает новый экземпляр составного имени путем разбора строки n с использованием синтаксиса, заданного предоставленными свойствами синтаксиса. | |
protected | CompoundName(Enumeration<String> comps,
Properties syntax) | Создает новый экземпляр составного имени, используя указанные в comps компоненты и синтаксис. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
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) | Сравнивает это составное имя с указанным объектом для определения порядка. |
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 Поля
mySyntax
protected transient Properties mySyntax
Свойства синтаксиса для этого составного имени. Это поле инициализируется конструкторами и не может быть null. Оно должно рассматриваться подклассами как неизменяемая переменная. Все необходимые изменения в mySyntax должны выполняться внутри конструкторов, а не после создания составного имени.
Конструкторы
CompoundName
protected CompoundName(Enumeration<String> comps,
Properties syntax) Создаёт новый экземпляр составного имени, используя компоненты, указанные в comps и syntax. Этот защищённый метод предназначен для использования подклассами CompoundName при переопределении методов, таких как clone(), getPrefix(), getSuffix().
- Параметры:
-
comps- Непустой перечисление компонентов для добавления. Каждый элемент перечисления имеет тип String. Перечисление будет использовано для извлечения элементов. -
syntax- Непустой объект свойств, определяющий синтаксис этого составного имени. См. описание класса для содержимого свойств.
CompoundName
public CompoundName(String n,
Properties syntax)
throws InvalidNameException Создаёт новый экземпляр составного имени, анализируя строку n с использованием синтаксиса, указанного в свойствах синтаксиса.
- Параметры:
-
n- Непустая строка для анализа. -
syntax- Непустой список свойств, определяющих синтаксис этого составного имени. См. описание класса для содержимого свойств. - Исключения:
-
InvalidNameException- Если 'n' нарушает синтаксис, указанный вsyntax.
Методы
toString
public String toString()
Генерирует строковое представление этого составного имени, используя правила синтаксиса составного имени. Правила синтаксиса описаны в описании класса. Пустой компонент представляется пустой строкой. Сгенерированное таким образом строковое представление может быть передано конструктору CompoundName с теми же свойствами синтаксиса для создания нового эквивалентного составного имени.
- Переопределяет:
-
toStringв классеObject - Возвращает:
- Непустое строковое представление этого составного имени.
equals
public boolean equals(Object obj)
Определяет, является ли obj синтаксически равным этому составному имени. Если obj равен null или не является CompoundName, возвращается false. Два составных имени равны, если каждый компонент в одном "равен" соответствующему компоненту в другом.
Равенство также определяется с точки зрения синтаксиса этого составного имени. Реализация CompoundName по умолчанию использует свойства синтаксиса jndi.syntax.ignorecase и jndi.syntax.trimblanks при сравнении двух компонентов на равенство. Если регистр игнорируется, две строки с одинаковой последовательностью символов, но с разным регистром, считаются равными. Если пробелы обрезаются, начальные и конечные пробелы игнорируются при сравнении.
Оба составных имени должны иметь одинаковое количество компонентов.
Примечание к реализации: В настоящее время свойства синтаксиса двух составных имен не сравниваются на равенство. Возможно, это будет реализовано в будущем.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- Возможно, нулевой объект для сравнения. - Возвращает:
- true, если obj равен этому составному имени, false в противном случае.
- См. также:
compareTo(java.lang.Object obj)
hashCode
public int hashCode()
Вычисляет хэш-код этого составного имени. Хэш-код представляет собой сумму хэш-кодов "канонизированных" форм отдельных компонентов этого составного имени. Каждый компонент "канонизируется" в соответствии с синтаксисом составного имени, прежде чем вычисляется его хэш-код. Например, для имени без учёта регистра, строчная форма имени имеет тот же хэш-код, что и его эквивалент в верхнем регистре.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- Целое число, представляющее хэш-код этого имени.
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
clone
public Object clone()
Создает копию этого составного имени. Изменения в компонентах этого составного имени не повлияют на новую копию и наоборот. Клон и это составное имя используют один и тот же синтаксис.
- Указано в:
-
cloneв интерфейсеName - Переопределяет:
-
cloneв классеObject - Возвращает:
- Непустая копия этого составного имени.
- См. также:
Cloneable
compareTo
public int compareTo(Object obj)
Сравнивает это CompoundName с указанным Object для определения порядка. Возвращает отрицательное целое число, ноль или положительное целое число в зависимости от того, меньше ли это имя, равно или больше, чем данный Object.
Если obj равен null или не является экземпляром CompoundName, выбрасывается ClassCastException.
См. equals() для определения того, что означает равенство двух составных имён. Если два составных имени равны, возвращается 0.
Порядок составных имён зависит от синтаксиса составного имени. По умолчанию они следуют лексикографическим правилам для сравнения строк с расширением, что это относится ко всем компонентам в составном имени и что сравнение отдельных компонентов зависит от свойств jndi.syntax.ignorecase и jndi.syntax.trimblanks, аналогично тому, как они влияют на equals(). Если это составное имя "лексикографически" меньше, чем obj, возвращается отрицательное число. Если это составное имя "лексикографически" больше, чем obj, возвращается положительное число.
Примечание к реализации: В настоящее время свойства синтаксиса двух составных имён не сравниваются при проверке порядка. Возможно, это будет реализовано в будущем.
- Указано в:
-
compareToв интерфейсеComparable<Object> - Указано в:
-
compareToв интерфейсеName - Параметры:
-
obj- Непустой объект для сравнения. - Возвращает:
- отрицательное целое число, ноль или положительное целое число в зависимости от того, меньше ли это имя, равно или больше, чем данный Object.
- Исключения:
-
ClassCastException- если obj не является CompoundName. - См. также:
equals(java.lang.Object)
size
public int size()
Извлекает количество компонентов в этом составном имени.
- Указано в:
-
sizeв интерфейсеName - Возвращает:
- Неотрицательное количество компонентов в этом составном имени.
isEmpty
public boolean isEmpty()
Определяет, является ли это составное имя пустым. Составное имя является пустым, если оно имеет ноль компонентов.
- Указано в:
-
isEmptyв интерфейсеName - Возвращает:
- true, если это составное имя пустое, false в противном случае.
getAll
public Enumeration<String> getAll()
Извлекает компоненты этого составного имени как перечисление строк. Эффекты обновлений этого составного имени для этого перечисления не определены.
- Указано в:
-
getAllв интерфейсеName - Возвращает:
- Непустое перечисление компонентов этого составного имени. Каждый элемент перечисления имеет класс String.
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' является префиксом, если оно равно getPrefix(n.size()) — другими словами, это составное имя начинается с 'n'. Если n равно null или не является составным именем, возвращается false.
Примечание к реализации: В настоящее время свойства синтаксиса n не используются при сравнении. Возможно, это будет реализовано в будущем.
- Указано в:
-
startsWithв интерфейсеName - Параметры:
-
n- Возможно, нулевое составное имя для проверки. - Возвращает:
- true, если n является CompoundName и является префиксом этого составного имени, 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- Непустые компоненты для добавления. - Возвращает:
- Обновленное CompoundName, а не новое. Не может быть null.
- Исключения:
-
InvalidNameException- Если suffix не является составным именем или если добавление компонентов нарушает синтаксис этого составного имени (например, превышение количества компонентов).
addAll
public Name addAll(int posn,
Name n)
throws InvalidNameException Добавляет компоненты составного имени — по порядку — в указанную позицию в этом составном имени. Компоненты этого составного имени в или после индекса первого нового компонента сдвигаются вверх (от индекса 0), чтобы разместить новые компоненты.
Примечание к реализации: В настоящее время свойства синтаксиса суффикса не используются и не проверяются. Возможно, это будет реализовано в будущем.
- Указано в:
-
addAllв интерфейсеName - Параметры:
-
n- Добавляемые непустые компоненты. -
posn- Индекс в этом имени, в котором следует добавить новые компоненты. Должно быть в диапазоне [0,size()]. - Возвращает:
- Обновлённое 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 Добавляет один компонент в указанную позицию внутри этого составного имени. Компоненты этого составного имени в или после индекса нового компонента сдвигаются вверх на единицу (от индекса 0) для размещения нового компонента.
- Указано в:
-
addв интерфейсеName - Параметры:
-
comp- Добавляемый непустой компонент. -
posn- Индекс, в который необходимо добавить новый компонент. Должно быть в диапазоне [0,size()]. - Возвращает:
- Обновлённое CompoundName, а не новое. Не может быть 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.naming/javax/naming/CompoundName.html