Spec-Zone.ru › OpenJDK 25

Класс ScopedValue.Carrier

java.lang.Object
java.lang.ScopedValue.Carrier
Внешний класс:
ScopedValue<T>
public static final class ScopedValue.Carrier extends Object
Сопоставление значений с областью видимости, представленных в виде ключей.

Carrier используется для накопления сопоставлений, чтобы операция (Runnable или ScopedValue.CallableOp) могла выполняться, когда всем значениям с областью видимости в сопоставлении назначены значения. В следующем примере операция выполняется с k1, которому назначено (или повторно назначено) значение v1, и k2, которому назначено (или повторно назначено) значение v2.

    ScopedValue.where(k1, v1).where(k2, v2).run(() -> ... );

Carrier неизменяем и потокобезопасен. Метод where возвращает новый объект Carrier, не изменяя существующее сопоставление.

Если не указано иное, передача аргумента null методу этого класса приведёт к выбросу NullPointerException.

Начиная с версии:
25

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

Модификатор и тип Метод Описание
<R, X extends Throwable>
R
call(ScopedValue.CallableOp<? extends R, X> op)
Вызывает операцию, возвращающую значение, при этом каждому значению с областью видимости в этом сопоставлении назначается его значение в текущем потоке.
<T> T get(ScopedValue<T> key)
Возвращает значение ScopedValue из этого сопоставления.
void run(Runnable op)
Выполняет операцию, при этом каждому значению с областью видимости в этом сопоставлении назначается его значение в текущем потоке.
<T> ScopedValue.Carrier where(ScopedValue<T> key, T value)
Возвращает новый Carrier с сопоставлениями из этого носителя и новым сопоставлением key со значением value.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

where

public <T> ScopedValue.Carrier where(ScopedValue<T> key, T value)
Возвращает новый Carrier с сопоставлениями из этого носителя и новым сопоставлением key со значением value. Если в этом носителе уже имеется сопоставление для значения с областью видимости key, ему будет назначено новое значение value. Текущий носитель неизменяем, поэтому этот метод его не изменяет.
Параметры типа:
T — тип значения
Параметры:
key — ключ ScopedValue
value — значение, может быть null
Возвращает:
новый Carrier с сопоставлениями из этого носителя и новым сопоставлением

get

public <T> T get(ScopedValue<T> key)
Возвращает значение ScopedValue из этого сопоставления.
Параметры типа:
T — тип значения
Параметры:
key — ключ ScopedValue
Возвращает:
значение
Выбрасывает:
NoSuchElementException — если ключ отсутствует в этом сопоставлении

call

public <R, X extends Throwable> R call(ScopedValue.CallableOp<? extends R, X> op) throws X
Вызывает операцию, возвращающую значение, при этом каждому значению с областью видимости в этом сопоставлении назначается его значение в текущем потоке. Когда операция завершается (нормально или с исключением), для каждого значения с областью видимости в сопоставлении в текущем потоке снова устанавливается состояние без привязки либо прежнее значение, если оно было привязано ранее. Если op завершается с исключением, оно передаётся этим методом.

Предполагается, что значения с областью видимости используются структурированным образом. Если код, вызванный операцией прямо или косвенно, создаёт StructuredTaskScopeПРЕДВАРИТЕЛЬНАЯ ВЕРСИЯ, но не вызывает для него закрытиеПРЕДВАРИТЕЛЬНАЯ ВЕРСИЯ, при завершении операции (нормально или с исключением) это обнаруживается как нарушение структуры. В этом случае нижележащая конструкция StructuredTaskScope закрывается, и выбрасывается StructureViolationExceptionПРЕДВАРИТЕЛЬНАЯ ВЕРСИЯ.

Параметры типа:
R — тип результата операции
X — тип исключения, выбрасываемого операцией
Параметры:
op — выполняемая операция
Возвращает:
результат
Выбрасывает:
StructureViolationExceptionPREVIEW — если обнаружено нарушение структуры
X — если op завершается с исключением

run

public void run(Runnable op)
Выполняет операцию, при этом каждому значению с областью видимости в этом сопоставлении назначается его значение в текущем потоке. Когда операция завершается (нормально или с исключением), для каждого значения с областью видимости в сопоставлении в текущем потоке снова устанавливается состояние без привязки либо прежнее значение, если оно было привязано ранее. Если op завершается с исключением, оно передаётся этим методом.

Предполагается, что значения с областью видимости используются структурированным образом. Если код, вызванный операцией прямо или косвенно, создаёт StructuredTaskScopeПРЕДВАРИТЕЛЬНАЯ ВЕРСИЯ, но не вызывает для него закрытиеПРЕДВАРИТЕЛЬНАЯ ВЕРСИЯ, при завершении операции (нормально или с исключением) это обнаруживается как нарушение структуры. В этом случае нижележащая конструкция StructuredTaskScope закрывается, и выбрасывается StructureViolationExceptionПРЕДВАРИТЕЛЬНАЯ ВЕРСИЯ.

Параметры:
op — выполняемая операция
Выбрасывает:
StructureViolationExceptionPREVIEW — если обнаружено нарушение структуры

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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.base/java/lang/ScopedValue.Carrier.html

Spec-Zone.ru

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