Класс CompositeName
- Все реализованные интерфейсы:
-
Serializable,Cloneable,Comparable<Object>,Name
public class CompositeName extends Object implements Name
Компоненты составного имени пронумерованы. Индексы составного имени с N компонентами находятся в диапазоне от 0 до N, но не включая N. Этот диапазон можно записать как [0, N). Наиболее значимый компонент находится в индексе 0. Пустое составное имя не имеет компонентов.
Синтаксис составного имени JNDI
JNDI определяет стандартное строковое представление для составных имён. Это представление — конкатенация компонентов составного имени слева направо с использованием разделителя компонентов (символа косой черты /) для разделения каждого компонента. Синтаксис JNDI определяет следующие метасимволы:- эскэпирование (обратная косая черта \),
- символы кавычек (одинарные (') и двойные ("")), и
- разделитель компонентов (символ косой черты /).
При сравнении двух составных имён регистр символов учитывается.
Ведущий разделитель компонентов (строка составного имени начинается с разделителя) обозначает ведущий пустой компонент (компонент, состоящий из пустой строки). Завершающий разделитель компонентов (строка составного имени заканчивается разделителем) обозначает завершающий пустой компонент. Смежные разделители компонентов обозначают пустой компонент.
Примеры составных имён
В этой таблице приведены примеры некоторых составных имён. Каждая строка показывает строковую форму составного имени и соответствующую структурную форму (CompositeName). | Строковое имя | CompositeName |
|---|---|
| "" | {} (пустое имя == new CompositeName("") == new CompositeName()) |
| "x" | {"x"} |
| "x/y" | {"x", "y"} |
| "x/" | {"x", ""} |
| "/x" | {"", "x"} |
| "/" | {""} |
| "//" | {"", ""} |
| "/x/" | {"", "x", ""} |
| "x//y" | {"x", "", "y"} |
Примеры композиции
Вот некоторые примеры композиции. Правый столбец показывает составление строковых составных имён, а левый столбец показывает составление соответствующихCompositeName. Обратите внимание, что составление строковых форм двух составных имён просто подразумевает конкатенацию их строковых форм. | Строковые имена | Составные имена |
|---|---|
| "x/y" + "/" = x/y/ | {"x", "y"} + {""} = {"x", "y", ""} |
| "" + "x" = "x" | {} + {"x"} = {"x"} |
| "/" + "x" = "/x" | {""} + {"x"} = {"", "x"} |
| "x" + "" + "" = "x" | {"x"} + {} + {} = {"x"} |
Доступ в нескольких потоках
Экземпляр классаCompositeName не синхронизирован по отношению к одновременному доступу в нескольких потоках. Несколько потоков, пытающихся получить доступ к объекту CompositeName и изменить его, должны заблокировать объект.- С:
- 1.3
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
| Создаёт новое пустое составное имя. |
||
| Создаёт новый экземпляр составного имени, анализируя строку n с использованием синтаксиса составных имён (слева направо, разделённых косой чертой). |
||
protected |
Создаёт новый экземпляр составного имени, используя компоненты, указанные в 'comps'. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Name |
add |
Добавляет один компонент в указанную позицию в составном имени. |
Name |
add |
Добавляет один компонент в конец составного имени. |
Name |
addAll |
Добавляет компоненты составного имени — в порядке — в указанную позицию в составном имени. |
Name |
addAll |
Добавляет компоненты составного имени — в порядке — в конец составного имени. |
Object |
clone() |
Создаёт копию этого составного имени. |
int |
compareTo |
Сравнивает это составное имя с указанным объектом для порядка. |
boolean |
endsWith |
Определяет, является ли составное имя суффиксом этого составного имени. |
boolean |
equals |
Определяет, равны ли два составных имени. |
String |
get |
Получает компонент этого составного имени. |
Enumeration |
getAll() |
Получает компоненты этого составного имени в виде перечисления строк. |
Name |
getPrefix |
Создаёт составное имя, компоненты которого состоят из префикса компонентов в этом составном имени. |
Name |
getSuffix |
Создаёт составное имя, компоненты которого состоят из суффикса компонентов в этом составном имени. |
int |
hashCode() |
Вычисляет хэш-код этого составного имени. |
boolean |
isEmpty() |
Определяет, пусто ли это составное имя. |
Object |
remove |
Удаляет компонент из этого составного имени. |
int |
size() |
Возвращает количество компонентов в этом составном имени. |
boolean |
startsWith |
Определяет, является ли составное имя префиксом этого составного имени. |
String |
toString() |
Генерирует строковое представление этого составного имени. |
Подробное описание конструкторов
CompositeName
protected CompositeName(Enumeration<String> comps)
- Параметры:
-
comps- Непустой перечисление, содержащий компоненты нового составного имени. Каждый элемент является строкой. Перечисление будет использовано для извлечения элементов.
CompositeName
public CompositeName(String n) throws InvalidNameException
- Параметры:
-
n- Непустая строка для анализа. - Исключения:
-
InvalidNameException- Если у n неверный синтаксис составного имени.
CompositeName
public CompositeName()
isEmpty() вызывается на нём.Подробное описание методов
toString
public String toString()
equals
public boolean equals(Object obj)
hashCode
compareTo
public int compareTo(Object obj)
Если obj равен null или не является экземпляром CompositeName, выбрасывается ClassCastException.
Смотрите equals() для того, что означает равенство двух составных имён. Если два составных имени равны, возвращается 0.
Порядок составных имён следует лексикографическим правилам сравнения строк, с расширением, что это относится ко всем компонентам составного имени. Эффект такой, как будто все компоненты были выстроены в указанном порядке, и лексикографические правила были применены к обеим строкам. Если это составное имя "лексикографически" меньше obj, возвращается отрицательное число. Если это составное имя "лексикографически" больше obj, возвращается положительное число.
- Определено в:
-
compareToв интерфейсеComparable<Object> - Определено в:
-
compareToв интерфейсеName - Параметры:
-
obj- Непустой объект для сравнения. - Возвращает:
- отрицательное целое число, ноль или положительное целое число, в зависимости от того, меньше, равно или больше это имя, чем заданный объект.
- Исключения:
-
ClassCastException- если obj не является CompositeName. - См. также:
clone
size
isEmpty
getAll
public Enumeration<String> getAll()
get
public String get(int posn)
- Определено в:
-
getв интерфейсеName - Параметры:
-
posn- Индекс компонента для извлечения (с нуля). Должен быть в диапазоне [0,size()). - Возвращает:
- Непустой компонент с индексом posn.
- Исключения:
-
ArrayIndexOutOfBoundsException- если posn находится вне указанного диапазона.
getPrefix
public Name getPrefix(int posn)
- Определено в:
-
getPrefixв интерфейсеName - Параметры:
-
posn- Базовый индекс компонента для остановки. Должен быть в диапазоне [0,size()]. - Возвращает:
- Составное имя, состоящее из компонентов в диапазоне [0,posn).
- Исключения:
-
ArrayIndexOutOfBoundsException- Если posn находится вне указанного диапазона.
getSuffix
public Name getSuffix(int posn)
- Определено в:
-
getSuffixв интерфейсеName - Параметры:
-
posn- Базовый индекс компонента для начала. Должен быть в диапазоне [0,size()]. - Возвращает:
- Составное имя, состоящее из компонентов в диапазоне [posn,size()). Если posn равен size(), возвращается пустое составное имя.
- Исключения:
-
ArrayIndexOutOfBoundsException- Если posn находится вне указанного диапазона.
startsWith
public boolean startsWith(Name n)
- Определено в:
-
startsWithв интерфейсеName - Параметры:
-
n- Возможный null имя для проверки. - Возвращает:
- true, если n является CompositeName и является префиксом этого составного имени, false в противном случае.
endsWith
public boolean endsWith(Name n)
addAll
public Name addAll(Name suffix) throws InvalidNameException
- Указано в:
-
addAllв интерфейсеName - Параметры:
-
suffix- Непустые компоненты для добавления. - Возвращает:
- Обновленное CompositeName, а не новое. Не может быть null.
- Выбрасывает:
-
InvalidNameException- Если суффикс не является составным именем.
addAll
public Name addAll(int posn, Name n) throws InvalidNameException
- Указано в:
-
addAllв интерфейсеName - Параметры:
-
posn- Индекс в этом имени, в котором нужно добавить новые компоненты. Должен быть в диапазоне [0,size()]. -
n- Непустые компоненты для добавления. - Возвращает:
- Обновленное CompositeName, а не новое. Не может быть null.
- Выбрасывает:
-
InvalidNameException- Если n не является составным именем. -
ArrayIndexOutOfBoundsException- Если posn находится вне указанного диапазона.
add
public Name add(String comp) throws InvalidNameException
- Указано в:
-
addв интерфейсеName - Параметры:
-
comp- Непустой компонент для добавления. - Возвращает:
- Обновленное CompositeName, а не новое. Не может быть null.
- Выбрасывает:
-
InvalidNameException- Если добавление comp в конец имени нарушит синтаксис имени.
add
public Name add(int posn, String comp) throws InvalidNameException
- Указано в:
-
addв интерфейсеName - Параметры:
-
posn- Индекс, в который нужно добавить новый компонент. Должен быть в диапазоне [0,size()]. -
comp- Непустой компонент для добавления. - Возвращает:
- Обновленное CompositeName, а не новое. Не может быть 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/CompositeName.html