Ещё одно интересное нововведение, которое ждёт нас в грядущем релизе JDK 25 — переменные с областью действия. Наверняка многие сталкивались с ситуацией, когда нужно передать какую-то информацию между двумя компонентами, но при этом по каким-то причинам не хочется добавлять новые аргументы в методы или свойства в классы. Зачастую такая задача решалась при помощи ThreadLocal - локальных переменных потока. В одном месте данные добавлялись в локальные переменные потока, а в другом - извлекались. Но у локальных переменных потоков есть свои недостатки и достаточно существенные. И именно недостатки ThreadLocal побудили разработчиков JDK придумать новый инструмент, позволяющий объявлять переменные в некоторой области действия. Переменные с областью действия находились в разработке с JDK 20 и к релизу JDK 25 стали стабильными. Переменные с областью действия описываются типизированным классом ScopedValue<T>, где тип соответствует типу данных переменной. Данный класс предоставляет следующие метод