Spec-Zone.ru › OpenJDK 25

Класс 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")
Эти свойства интерпретируются согласно следующим правилам:
  1. В строке без кавычек и символов экранирования каждое вхождение разделителя отделяет два атомарных имени. Каждое атомарное имя называется компонентом.
  2. Разделитель, кавычка или символ экранирования экранируется, если непосредственно слева от него стоит символ экранирования.
  3. Если имеются два набора кавычек, конкретная открывающая кавычка должна соответствовать своей парной закрывающей кавычке.
  4. Неэкранированная открывающая кавычка, предшествующая компоненту, должна соответствовать неэкранированной закрывающей кавычке в конце компонента. Компонент, заключённый таким образом в кавычки, называется компонентом в кавычках. При его разборе удаляются открывающая и закрывающая кавычки, а промежуточные символы рассматриваются как обычные, если не применимо одно из приведённых ниже правил для компонентов в кавычках.
  5. Кавычки, встроенные в компоненты, не заключённые в кавычки, рассматриваются как обычные строки и не требуют парной кавычки.
  6. Разделитель, который экранирован или находится между неэкранированными кавычками, рассматривается как обычная строка, а не как разделитель.
  7. Строка экранирования внутри компонента в кавычках действует как символ экранирования только тогда, когда за ней следует соответствующая закрывающая кавычка. Это можно использовать для включения экранированной кавычки в компонент в кавычках.
  8. Экранированная строка экранирования не рассматривается как строка экранирования.
  9. Строка экранирования, за которой не следует метастрока (кавычка или разделитель) и которая не находится в конце компонента, рассматривается как обычная строка.
  10. Начальный разделитель (строка составного имени начинается с разделителя) обозначает начальный пустой атомарный компонент (состоящий из пустой строки). Конечный разделитель (строка составного имени заканчивается разделителем) обозначает конечный пустой атомарный компонент. Соседние разделители обозначают пустой атомарный компонент.

Строковое представление составного имени соответствует описанному выше синтаксису. При преобразовании компонентов составного имени в их строковое представление применяются описанные выше правила зарезервированного синтаксиса (например, встроенные разделители экранируются или заключаются в кавычки), чтобы при разборе той же строки были получены те же компоненты, что и в исходном составном имени.

Многопоточный доступ

Экземпляр CompoundName не синхронизирован для одновременного многопоточного доступа. Потоки, которые пытаются получить доступ к CompoundName и изменить его, должны блокировать объект.
С момента версии:
1.3
См. также:
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
protected Properties mySyntax
Свойства синтаксиса для этого составного имени.

Краткое описание конструкторов

CompoundName(String n, Properties syntax)
CompoundName(Enumeration<String> comps, Properties syntax)
Модификатор Конструктор Описание
Создаёт новый экземпляр составного имени, разбирая строку n с использованием заданных свойств синтаксиса.
protected
Создаёт новый экземпляр составного имени с использованием компонентов, заданных в comps, и синтаксиса, заданного в syntax.

Краткое описание методов

Модификатор и тип Метод Описание
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 с указанным Object для определения порядка.
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()
Создаёт строковое представление этого составного имени, используя правила его синтаксиса.

Методы, объявленные в классе 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 — Возможно, null-объект для сравнения.
Возвращает:
true, если obj равен этому составному имени, иначе false.
См. также:
  • compareTo(java.lang.Object obj)

hashCode

public int hashCode()
Вычисляет хеш-код этого составного имени. Хеш-код представляет собой сумму хеш-кодов «канонизированных» форм отдельных компонентов этого составного имени. Перед вычислением хеш-кода каждый компонент «канонизируется» согласно синтаксису составного имени. Например, для имени без учёта регистра строка в верхнем регистре имеет тот же хеш-код, что и её эквивалент в нижнем регистре.
Переопределяет:
hashCode в классе Object
Возвращает:
Значение типа int, представляющее хеш-код этого имени.
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

clone

public Object clone()
Создаёт копию этого составного имени. Изменения компонентов этого составного имени не повлияют на новую копию, и наоборот. Клон и это составное имя используют один и тот же синтаксис.
Определено в:
clone в интерфейсе Name
Переопределяет:
clone в классе Object
Возвращает:
Ненулевую копию этого составного имени.
См. также:
  • Object.clone()

compareTo

public int compareTo(Object obj)
Сравнивает это CompoundName с указанным Object для определения порядка. Возвращает отрицательное целое число, ноль или положительное целое число, если это Name меньше, равно или больше заданного Object соответственно.

Если 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.
См. также:
  • 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 — Возможно, null-составное имя для проверки.
Возвращает:
true, если n является CompoundName и префиксом этого составного имени, иначе false.

endsWith

public boolean endsWith(Name n)
Определяет, является ли составное имя суффиксом этого составного имени. Составное имя 'n' является суффиксом, если оно равно getSuffix(size()-n.size()), то есть это составное имя заканчивается на 'n'. Если n равно null или не является составным именем, возвращается false.

Примечание по реализации: в настоящее время свойства синтаксиса n не используются при сравнении. В будущем это может измениться.

Определено в:
endsWith в интерфейсе Name
Параметры:
n — Возможно, null-составное имя для проверки.
Возвращает:
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
Параметры:
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
Добавляет один компонент в заданную позицию этого составного имени. Компоненты этого составного имени с индексом, равным индексу нового компонента, или большим индексом сдвигаются на одну позицию вверх (от индекса 0), чтобы освободить место для нового компонента.
Определено в:
add в интерфейсе Name
Параметры:
posn — Индекс для добавления нового компонента. Должен находиться в диапазоне [0,size()].
comp — Ненулевой компонент для добавления.
Возвращает:
Обновлённый CompoundName, а не новый объект. Не может быть null.
Исключения:
ArrayIndexOutOfBoundsException — Если posn находится за пределами указанного диапазона.
InvalidNameException — Если добавление comp в указанную позицию нарушает синтаксис составного имени.

remove

public Object remove(int posn) throws InvalidNameException
Удаляет компонент из этого составного имени. Компонент этого составного имени в позиции 'posn' удаляется, а компоненты с индексами больше 'posn' сдвигаются на одну позицию вниз (к индексу 0).
Определено в:
remove в интерфейсе Name
Параметры:
posn — Индекс удаляемого компонента. Должен находиться в диапазоне [0,size()).
Возвращает:
Удалённый компонент (String).
Исключения:
ArrayIndexOutOfBoundsException — Если posn находится за пределами указанного диапазона (включая случай, когда составное имя пусто).
InvalidNameException — Если удаление компонента нарушает синтаксис составного имени.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API