[英]Expanding variable scope beyond curly braces in Java
假設我有以下代碼塊:
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
。到synchronized塊)
抱歉不行。 當你越來越多地使用這種語言時,這只是看起來更好/更正常的東西。
如果您希望無法從其他范圍訪問這些變量,則可以在另一個范圍中定義變量和同步塊。 像這樣的東西:
{
int version;
String content;
synchronized (foo) {
version = foo.getVersion();
content = foo.getContent();
}
// Do something with version and content
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.