Класс ScopedValue.Carrier
- Внешний класс:
ScopedValue<T>
public static final class ScopedValue.Carrier extends Object
Carrier используется для накопления сопоставлений, чтобы операция (Runnable или ScopedValue.CallableOp) могла выполняться, когда всем значениям с областью видимости в сопоставлении назначены значения. В следующем примере операция выполняется с k1, которому назначено (или повторно назначено) значение v1, и k2, которому назначено (или повторно назначено) значение v2.
Carrier неизменяем и потокобезопасен. Метод where возвращает новый объект Carrier, не изменяя существующее сопоставление.
Если не указано иное, передача аргумента null методу этого класса приведёт к выбросу NullPointerException.
- Начиная с версии:
- 25
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<R, X extends Throwable> |
call |
Вызывает операцию, возвращающую значение, при этом каждому значению с областью видимости в этом сопоставлении назначается его значение в текущем потоке. |
<T> T |
get |
Возвращает значение ScopedValue из этого сопоставления. |
void |
run |
Выполняет операцию, при этом каждому значению с областью видимости в этом сопоставлении назначается его значение в текущем потоке. |
<T> ScopedValue.Carrier |
where |
Возвращает новый Carrier с сопоставлениями из этого носителя и новым сопоставлением key со значением value. |
Подробное описание методов
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— если обнаружено нарушение структуры
© 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