Класс 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 |
Создаёт новую операцию с пространством имён. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
contains |
Возвращает true, если эта операция с пространством имён содержит пространство имён, равное указанному. |
static boolean |
contains |
Возвращает true, если указанная операция является NamespaceOperation, её базовая операция равна указанной операции и она содержит указанное пространство имён. |
boolean |
equals |
Возвращает true, если другой объект также является операцией с пространством имён, а их базовые операции и пространства имён равны. |
Operation |
getBaseOperation() |
Возвращает базовую операцию этой именованной операции. |
static Operation |
getBaseOperation |
Если переданная операция является операцией с пространством имён, возвращает её getBaseOperation(), иначе возвращает операцию без изменений. |
Namespace |
getNamespace |
Возвращает i-е пространство имён этой операции с пространством имён. |
int |
getNamespaceCount() |
Возвращает количество пространств имён в этой операции с пространством имён. |
Namespace[] |
getNamespaces() |
Возвращает пространства имён этой операции с пространством имён. |
static Namespace[] |
getNamespaces |
Если переданная операция является операцией с пространством имён, возвращает её 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 |
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе Operation
named, withNamespace, withNamespaces | Модификатор и тип | Метод | Описание |
|---|---|---|
default NamedOperation |
named |
Возвращает NamedOperation, использующую эту операцию в качестве базовой. |
default NamespaceOperation |
withNamespace |
Возвращает NamespaceOperation, использующую эту операцию в качестве базовой. |
default NamespaceOperation |
withNamespaces |
Возвращает 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-е пространство имён этой операции с пространством имён.
- Исключения:
-
IndexOutOfBoundsException— если индекс выходит за допустимый диапазон.
contains
public boolean contains(Namespace namespace)
- Параметры:
-
namespace— искомое пространство имён. Не должно быть null. - Возвращает:
- true, если эта операция с пространством имён содержит пространство имён, равное указанному.
equals
public boolean equals(Object obj)
hashCode
toString
public String toString()
toString её базовой операции, за которым следует двоеточие, а затем список её пространств имён, разделённых вертикальной чертой (например, "GET:PROPERTY|ELEMENT").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)
NamespaceOperation, её базовая операция равна указанной операции и она содержит указанное пространство имён. Если это не NamespaceOperation, возвращает false.- Параметры:
-
op— операция. Не должна быть null. -
baseOperation— искомая базовая операция. Не должна быть null. -
namespace— искомое пространство имён. Не должно быть null. - Возвращает:
- true, если переданная операция является
NamespaceOperation, её базовая операция равна искомой базовой операции и она содержит пространство имён, равное искомому.
© 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.