作者gasbomb (虚空雷神兽)
看板java
标题Re: [问题] 使用JSQLParser,要将抓出来的where子句
时间Fri Feb 18 19:20:29 2022
因为 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://webptt.com/cn.aspx?n=bbs/java/M.1645183233.A.0FA.html
※ 编辑: gasbomb (111.249.122.248 台湾), 02/19/2022 02:00:50