簡體   English   中英

使用Groovy腳本創建Java類的實例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM