[英]Create instances of java class using Groovy script
我正在使用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
當我在Java groovy中添加A時,請初始化binding.setVariable(“ a”,new A());
我進入A的列表3個對象,但它們全部在num中包含值3(列表中的所有3個對象可能都是同一對象)。
感謝您為解決該問題而提供的所有幫助。
現在,我對其進行了測試,讓我們將其寫下來作為答案:
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:dr
我只想要代表:D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.