Я хочу создать класс Groovy, и у меня есть некоторые проблемы
Мой первый выбор - использовать GroovyShell :
groovy-script:
class Foo {
public String doStuff(String stuff) {
return stuff + "_utils";
}
}
new Foo(); // ??
main-script:
GroovyShell shell = new GroovyShell();
Script script = shell.parse(new File(path));
def clazz = script.run();
String result = clazz.doStuff("test");
print(result); // test_utils;
Второй вариант - использовать GroovyClassLoader :
groovy-script
class Foo {
public String doStuff(String stuff) {
return stuff + "_utils";
}
}
main-script
GroovyClassLoader loader = new GroovyClassLoader();
Script script = loader.parseClass(new File(path))
Object clazz = script.newInstance();
Object[] args = new Object[1];
args[0] = "test";
String result = clazz.invokeMethod("doStuff", args);
print(result) // test_utils
Оба будут работать нормально, я бы предпочел использовать GroovyShell, потому что я использую его везде в моем текущем коде, но я не знаю, может ли new Foo()
внутри моих сценариев вызвать утечки памяти,Возможно ли это?