Скажем, у меня есть следующий блок кода:
int version;
String content;
synchronized (foo) {
version = foo.getVersion();
content = foo.getContent();
}
// Do something with version and content
Его цель — получить потокобезопасное последовательное представление версии и содержимого некоторого объекта foo.
Есть ли способ написать это более кратко, чтобы это выглядело более похоже на это?
synchronized (foo) {
int version = foo.getVersion();
String content = foo.getContent();
}
// Do something with version and content
Проблема в том, что в этой версии переменные определены в области (синхронизированных) фигурных скобок и поэтому не могут быть доступны за пределами блока. Итак, вопрос: есть ли способ пометить эти фигурные скобки как не определяющие новый блок области или пометить переменные как принадлежащие родительской области без необходимости объявлять их там?
(Примечание: я не хочу просто вставлять // Do something with version and content
в синхронизированный блок.)