Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JEXL在哪里存储本地变量?本地变量是通过什么机制分配的?_Java_Jexl - Fatal编程技术网

Java JEXL在哪里存储本地变量?本地变量是通过什么机制分配的?

Java JEXL在哪里存储本地变量?本地变量是通过什么机制分配的?,java,jexl,Java,Jexl,apachejexl脚本引擎调用上下文的setter方法来完成脚本中的赋值。我提供的上下文将接管任务的存储 a = mylib.hello(); 当声明局部变量时,上下文的等价物是什么 var b = mylib.goodbye(); 在我的应用程序设计中,我需要截取每个赋值,并定位每个变量 本地变量的分配机制是什么,它们存储在哪里?如何重载/重写/拦截该机制?为了处理局部变量和脚本参数,JEXL在解析时创建作用域(Scope),作为可链接的符号表。对于每个变量/参数,将在解析范围中创建一个

apachejexl脚本引擎调用上下文的setter方法来完成脚本中的赋值。我提供的上下文将接管任务的存储

a = mylib.hello();
当声明局部变量时,上下文的等价物是什么

var b = mylib.goodbye();
在我的应用程序设计中,我需要截取每个赋值,并定位每个变量


本地变量的分配机制是什么,它们存储在哪里?如何重载/重写/拦截该机制?

为了处理局部变量和脚本参数,JEXL在解析时创建作用域(Scope),作为可链接的符号表。对于每个变量/参数,将在解析范围中创建一个符号。每个脚本和lambda/函数有一个作用域。在执行过程中,将根据作用域创建一个框架,用于保存符号的值。 要截取指定的局部变量,必须派生(内部)框架类并重写“set”方法;只有几个构造函数调用,所以这不是一个巨大的变化。 请注意,此信息基于3.2主干,您可能会得到一个本地分支(包保护类等)。 如果你能理解为什么你需要捕捉,那会很有趣。 干杯