Создание экземпляров Java-класса с помощью скрипта Groovy
Я использую Groovy скрипт и Java, я новичок в теме. Я пытаюсь создать несколько экземпляров Java-класса (A) из Groovy сценария и передать их в список, а затем передать этот список в новый класс (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);
мой файл.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 для класса: file
когда я добавляю A в java groovy, инициализируем binding.setVariable("a", new A());
Я получаю в списке 3 объекта A, но все они содержат значение 3 в num (вероятно, все 3 объекта в списке - это один и тот же объект).
ценим всю помощь, которую я могу получить, чтобы решить эту проблему.
1 ответ
Теперь, когда я проверил это, давайте запишем это как ответ:
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) написать импорт в любом случае, так как основная программа, вероятно, не знает, что будет делать скрипт.
ТЛ: др
Я просто хочу репутацию:D