2

我正在使用 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)

当我在线程“main”groovy.lang.MissingPropertyException 中运行我的应用程序异常时,我不断收到此异常:没有这样的属性:A for class:file

当我将 A 添加到 java groovy 初始化 binding.setVariable("a", new A());

我进入列表 A 的 3 个对象,但它们都在 num 中包含值 3(可能列表中的所有 3 个对象都是同一个对象)。

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

4

1 回答 1

4

现在我测试了它,让我们把它写下来作为答案:

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

于 2017-07-13T13:58:08.617 回答