Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 将groovy绑定与groovyclassloader一起使用_Java_Groovy - Fatal编程技术网

Java 将groovy绑定与groovyclassloader一起使用

Java 将groovy绑定与groovyclassloader一起使用,java,groovy,Java,Groovy,我在读一本关于在我们最近继承的代码基础上做类似事情的书。问题在于,我们继承的代码使用java应用程序中的groovy,并使用GroovyClassLoader加载然后实例化/调用groovy脚本。我想知道,是否有任何方法可以将groovy绑定与groovyclassloader方法结合使用。还是有更合适的方法?(expando meta class?GroovyClassLoader创建覆盖groovy.lang.Script的类 在类脚本上,有一个setBinding方法,该方法与演示文稿中的

我在读一本关于在我们最近继承的代码基础上做类似事情的书。问题在于,我们继承的代码使用java应用程序中的groovy,并使用GroovyClassLoader加载然后实例化/调用groovy脚本。我想知道,是否有任何方法可以将groovy绑定与groovyclassloader方法结合使用。还是有更合适的方法?(expando meta class?

GroovyClassLoader创建覆盖
groovy.lang.Script
的类


在类脚本上,有一个setBinding方法,该方法与演示文稿中的绑定相同。调用
setBinding()
在调用
run()

之前,代码执行以下操作。1) 使用groovy类加载器创建一个新类。2) 使用Class.newInstance创建一个实例,并使用instance.invokeMethod执行该方法。当我将实例强制转换为脚本时,我得到一个类强制转换异常。发布您的代码和加载的文件示例,但是如果您不加载脚本,就不能使用绑定。groovy代码本身是使用一些非常复杂的字符串操作生成的。生成代码的模板似乎表明一个是“类XXX{…}”,另一个是“类YYY扩展XXX{…}”。然后将整个字符串传递给groovyclassloader.parseClass()。所以,看起来像是可疑的,不能使用绑定。是否有其他解决方案?
绑定的目的是向脚本中注入“上下文”(默认属性或方法)。如果您正在生成类,则不能使用绑定,但不需要它:使用模板生成所需的存根感谢您的响应。生成类的代码是非常通用的东西。我想知道我们是否可以使用HandleMetaClass来注入每个实例的元类并添加属性。您知道这是否存在性能或并发性问题吗?