Spec-Zone.ru › OpenJDK 27

Класс NamespaceOperation

java.lang.Object
jdk.dynalink.NamespaceOperation
Все реализуемые интерфейсы:
Operation
public final class NamespaceOperation extends Object implements Operation
Описывает операцию, которая работает как минимум с одним Namespace объекта. Например, получение свойства будет описываться как
Operation propertyGetter = new NamespaceOperation(
    StandardOperation.GET,
    StandardNamespace.PROPERTY);
Такие операции часто объединяются с NamedOperation; например, чтобы выразить получение свойства с именем "color", нужно создать:
Operation colorPropertyGetter = new NamedOperation(
    new NamespaceOperation(
        StandardOperation.GET,
        StandardNamespace.PROPERTY),
    "color");

Хотя NamespaceOperation можно создавать напрямую, часто удобнее использовать фабричные методы Operation.withNamespace(Namespace) и Operation.withNamespaces(Namespace...), например:

Operation getElementOrPropertyEmpty =
    StandardOperation.GET
        .withNamespace(StandardNamespace.PROPERTY)
        .named("color");

Операции с несколькими пространствами имён

Если указано несколько пространств имён, они рассматриваются как альтернативы в порядке предпочтения. Семантика такой операции — «первое применимое». То есть составную операцию GET:PROPERTY|ELEMENT:color следует интерпретировать как получить свойство с именем "color" у объекта, но если такого свойства нет, получить вместо него элемент коллекции с именем "color".

Операции с несколькими пространствами имён полезны при реализации языков, которые не различают одно или несколько пространств имён, а также при выражении операций над объектами, которые можно считать как обычными объектами, так и коллекциями, например объектами Java Map. Операция GET:PROPERTY|ELEMENT:empty для Java-карты всегда будет соответствовать свойству Map.isEmpty(), но GET:ELEMENT|PROPERTY:empty будет соответствовать элементу карты с ключом "empty", если карта содержит такой ключ, и только если ключ отсутствует — геттеру свойства isEmpty(). Если исходный язык предписывает такую семантику, её легко реализовать с помощью операций с несколькими пространствами имён.

Даже если сам язык не различает некоторые пространства имён, может быть полезно сопоставить разные синтаксические конструкции с разным порядком пространств имён. Например, исходное выражение obj.color можно сопоставить с GET:PROPERTY|ELEMENT|METHOD:color, а другое исходное выражение, похожее на обращение к элементу коллекции, obj[key], можно выразить как GET:ELEMENT|PROPERTY|METHOD, чтобы отдать предпочтение семантике элемента. Наконец, если полученное значение затем вызывается, имеет смысл переместить METHOD в начало списка пространств имён: часть исходного выражения obj.color(), отвечающая за получение значения, может быть GET:METHOD|PROPERTY|ELEMENT:color, а для obj[key]() — GET:METHOD|ELEMENT|PROPERTY.

Базовая операция операции с пространством имён не может сама быть операцией с пространством имён или именованной операцией; это должна быть простая операция, например один из элементов StandardOperation. Однако сама операция с пространством имён может служить базовой операцией именованной операции; например, типичный способ создать упомянутую выше операцию GET:ELEMENT|PROPERTY:empty:

Operation getElementOrPropertyEmpty = StandardOperation.GET
    .withNamespaces(
        StandardNamespace.ELEMENT,
        StandardNamespace.PROPERTY)
    .named("empty");
С версии:
9

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

Конструктор Описание
NamespaceOperation(Operation baseOperation, Namespace... namespaces)
Создаёт новую операцию с пространством имён.

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

Модификатор и тип Метод Описание
boolean contains(Namespace namespace)
Возвращает true, если эта операция с пространством имён содержит пространство имён, равное указанному.
static boolean contains(Operation op, Operation baseOperation, Namespace namespace)
Возвращает true, если указанная операция является NamespaceOperation, её базовая операция равна указанной операции и она содержит указанное пространство имён.
boolean equals(Object obj)
Возвращает true, если другой объект также является операцией с пространством имён, а их базовые операции и пространства имён равны.
Operation getBaseOperation()
Возвращает базовую операцию этой именованной операции.
static Operation getBaseOperation(Operation op)
Если переданная операция является операцией с пространством имён, возвращает её getBaseOperation(), иначе возвращает операцию без изменений.
Namespace getNamespace(int i)
Возвращает i-е пространство имён этой операции с пространством имён.
int getNamespaceCount()
Возвращает количество пространств имён в этой операции с пространством имён.
Namespace[] getNamespaces()
Возвращает пространства имён этой операции с пространством имён.
static Namespace[] getNamespaces(Operation op)
Если переданная операция является операцией с пространством имён, возвращает её getNamespaces(), иначе возвращает пустой массив.
int hashCode()
Возвращает хеш-код этой операции с пространством имён.
String toString()
Возвращает строковое представление этой операции с пространством имён.

Методы, объявленные в классе Object

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

Методы, объявленные в интерфейсе Operation

named, withNamespace, withNamespaces
Модификатор и тип Метод Описание
default NamedOperation named(Object name)
Возвращает NamedOperation, использующую эту операцию в качестве базовой.
default NamespaceOperation withNamespace(Namespace namespace)
Возвращает NamespaceOperation, использующую эту операцию в качестве базовой.
default NamespaceOperation withNamespaces(Namespace... namespaces)
Возвращает NamespaceOperation, использующую эту операцию в качестве базовой.

Подробное описание конструкторов

NamespaceOperation

public NamespaceOperation(Operation baseOperation, Namespace... namespaces)
Создаёт новую операцию с пространством имён.
Параметры:
baseOperation — базовая операция, работающая с одним или несколькими пространствами имён.
namespaces — одно или несколько пространств имён, с которыми работает эта операция.
Исключения:
IllegalArgumentException — если указано менее одного пространства имён или базовая операция сама является NamespaceOperation либо NamedOperation.
NullPointerException — если массив namespaces или любой из его элементов равен null либо если baseOperation равен null.

Подробное описание методов

getBaseOperation

public Operation getBaseOperation()
Возвращает базовую операцию этой именованной операции.
Возвращает:
базовую операцию этой именованной операции.

getNamespaces

public Namespace[] getNamespaces()
Возвращает пространства имён этой операции с пространством имён. Возвращаемый массив является копией; его изменение не влияет на этот объект.
Возвращает:
пространства имён этой операции с пространством имён.

getNamespaceCount

public int getNamespaceCount()
Возвращает количество пространств имён в этой операции с пространством имён.
Возвращает:
количество пространств имён в этой операции с пространством имён.

getNamespace

public Namespace getNamespace(int i)
Возвращает i-е пространство имён этой операции с пространством имён.
Параметры:
i — индекс пространства имён
Возвращает:
i-е пространство имён этой операции с пространством имён.
Исключения:
IndexOutOfBoundsException — если индекс выходит за допустимый диапазон.

contains

public boolean contains(Namespace namespace)
Возвращает true, если эта операция с пространством имён содержит пространство имён, равное указанному.
Параметры:
namespace — искомое пространство имён. Не должно быть null.
Возвращает:
true, если эта операция с пространством имён содержит пространство имён, равное указанному.

equals

public boolean equals(Object obj)
Возвращает true, если другой объект также является операцией с пространством имён, а их базовые операции и пространства имён равны.
Переопределяет:
equals в классе Object
Параметры:
obj — объект для сравнения
Возвращает:
true, если этот объект равен другому, иначе false.
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает хеш-код этой операции с пространством имён. Определён как равный baseOperation.hashCode() + 31 * Arrays.hashCode(namespaces).
Переопределяет:
hashCode в классе Object
Возвращает:
значение хеш-кода для этого объекта
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

toString

public String toString()
Возвращает строковое представление этой операции с пространством имён. Оно определяется как toString её базовой операции, за которым следует двоеточие, а затем список её пространств имён, разделённых вертикальной чертой (например, "GET:PROPERTY|ELEMENT").
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этой операции с пространством имён.

getBaseOperation

public static Operation getBaseOperation(Operation op)
Если переданная операция является операцией с пространством имён, возвращает её getBaseOperation(), иначе возвращает операцию без изменений.
Параметры:
op — операция
Возвращает:
базовую операцию переданной операции.

getNamespaces

public static Namespace[] getNamespaces(Operation op)
Если переданная операция является операцией с пространством имён, возвращает её getNamespaces(), иначе возвращает пустой массив.
Параметры:
op — операция
Возвращает:
пространства имён переданной операции.

contains

public static boolean contains(Operation op, Operation baseOperation, Namespace namespace)
Возвращает true, если указанная операция является NamespaceOperation, её базовая операция равна указанной операции и она содержит указанное пространство имён. Если это не NamespaceOperation, возвращает false.
Параметры:
op — операция. Не должна быть null.
baseOperation — искомая базовая операция. Не должна быть null.
namespace — искомое пространство имён. Не должно быть null.
Возвращает:
true, если переданная операция является NamespaceOperation, её базовая операция равна искомой базовой операции и она содержит пространство имён, равное искомому.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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