首页 文章

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

提问于
浏览
0

我正在使用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中运行我的App Exception时不断收到此异常:没有这样的属性:A for class:file

当我向Java groovy初始化binding.setVariable(“a”,new A())添加A时;

我在列表中得到了3个A对象,但是所有这些对象都包含num中的值3(列表中的所有3个对象可能都是同一个对象) .

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

1 回答

  • 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

相关问题