使用Groovy脚本创建java类的实例

时间:2017-07-13 13:39:36

标签: java groovy groovyscriptengine

我正在使用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个对象可能都是同一个对象)。

感谢我能解决这个问题的所有帮助。

1 个答案:

答案 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