Создание экземпляров 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

Другие вопросы по тегам