Re: [問題] 使用JSQLParser,要將抓出來的where子句
因為 java 對 closure 的規範就是你不能夠去變更 local variable 的 value
這種情境我一律推薦寫一個 class 去包裝
像這樣
class StringValue {
private String value = "";
void set(String value) {
this.value = value;
}
String get() {
return value;
}
}
你只要把你的 left 改成這個物件就可以了
補充說明一下匿名內部類別不能修改 local variable 的原因
因為 local variable 是儲存在 stack 的
當你 call 匿名內部類別的 method 時就開了一個新的 stack
參考到的 value 會 copy 一份到新的 stack
這時候你重新 assign 也沒辦法改變原本變數的 value
類似這種狀況
int a = 10;
int aPrime = a;
aPrime = 5;
System.out.println(a) // 10
所以 java 才會要求被匿名內部類別參考到的區域變數必須要是 final 的
--
╔═◢ ◣═╦╦═════╦═════╗
║ ◤◤◤ ◥ ╠╣飛鳥ももこ╠═╗ ║
║ ▇ ▇ ║╚═════╝ ╚═╦═╣
║ ▌ ● ● ▌ ║╔══════╗╔═╩═╣
║◤ ◥ ︺█◤ ◥╠╣Momoko Asuka╠╝ ║
╚◣◢ ▄▂▄ ◣◢╩╩══════╩════╝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.147.192 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/java/M.1645183233.A.0FA.html
※ 編輯: gasbomb (111.249.122.248 臺灣), 02/19/2022 02:00:50
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章