我正在使用Groovy脚本和Java,我是这个主题的新手。 我试图从groovy脚本创建java类(A)的多个实例并将它们传递给列表,然后将此列表传递给新类(B)。
我的B java文件是:
public class B {
public void getValues(List<A> values) {...}
}
我的一个java文件是:
public class A {
public long num;
public A(long num){
this.num = num;
}
}
我的主要java文件是:
GroovyScriptEngine groovyScriptEngine = new GroovyScriptEngine(/*path to file.groovy*/);
Binding binding = new Binding();
binding.setVariable("b", new B());
groovyScriptEngine.run("file.groovy", binding);
我的file.groovy是:
def myList = []
myList.add(new A(1))
myList.add(new A(2))
myList.add(new A(3))
b.getValues(myList)
当我运行我的应用程序时,我一直收到此异常 线程&#34; main&#34;中的例外情况groovy.lang.MissingPropertyException:没有这样的属性:A for class:file
当我向Java groovy初始化添加A时 binding.setVariable(&#34; a&#34;,new A());
我在列表中得到了3个A对象但是所有这些对象都包含num中的值3(列表中的所有3个对象可能都是同一个对象)。
感谢我能解决这个问题的所有帮助。
答案 0 :(得分:0)
现在我测试了它,让我们把它写下来作为答案:
import path.to.my.classes.A; // this is required
def myList = []
myList.add(new A(1))
myList.add(new A(2))
myList.add(new A(3))
b.setValues(myList)
还有其他方法可以实现,例如可以使用绑定(iirc)传递的自动导入,但最好还是(imo)编写导入,因为主程序可能不知道脚本会做什么
TL:博士
我只想要代表:D