Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Подробное описание полей

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
Добавляет компоненты составного имени — по порядку — в конец этого составного имени.

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

Определен в:
addAll в интерфейсе Name
Параметры:
suffix — непустые компоненты для добавления.
Возвращает:
Обновленный CompoundName, а не новый объект. Не может быть null.
Исключения:
InvalidNameException — если suffix не является составным именем или добавление компонентов нарушает синтаксис этого составного имени (например, превышено допустимое количество компонентов).

addAll

public Name addAll(int posn, Name n) throws InvalidNameException
Добавляет компоненты составного имени — по порядку — в указанную позицию этого составного имени. Компоненты этого составного имени, находящиеся на индексе первого нового компонента или после него, сдвигаются вверх (в сторону от индекса 0), чтобы освободить место для новых компонентов.

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

Определен в:
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, 2026, 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.

Spec-Zone.ru

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