JAVA 에서 Groovy 를 실행 합 니 다.
21980 단어 groovy
1.Groovy 스 크 립 트 사례
def run(foo) {
println 'Hello World!'
x = 123
foo * 10
}
run foo
l Groovy 스 크 립 트 샘플 은 run()함 수 를 포함 하고 마지막 에 run()을 호출 하여 결 과 를 되 돌려 줍 니 다.
l run()을 호출 할 때 전달 하 는 매개 변 수 는 foo 속성 입 니 다.(스 크 립 트 를 실행 할 때 외부 에서 속성 값 을 제공 합 니 다)
2、Groovy Shell 을 사용 하여 Groovy 스 크 립 트 실행
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
import java.io.File;
public class EmbedGroovy {
private Binding binding = new Binding();
public Object getProperty(String name) {
return binding.getProperty(name);
}
public void setParameters(String[] paramNames, Object[] paramValues) {
int len = paramNames.length;
if (len != paramValues.length) {
System.out.println("parameters not match!");
}
for (int i = 0; i < len; i++) {
binding.setProperty(paramNames[i], paramValues[i]);
}
}
public Object runScript(String scriptName) {
GroovyShell shell = new GroovyShell(binding);
try {
return shell.evaluate(new File(scriptName));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
EmbedGroovy embedGroovy = new EmbedGroovy();
String[] paramNames = { "foo" };
Object[] paramValues = { new Integer(2) };
embedGroovy.setParameters(paramNames, paramValues);
Object result = embedGroovy.runScript("src/Foo.groovy");
System.out.println(result);
System.out.println(embedGroovy.getProperty("foo"));
System.out.println(embedGroovy.getProperty("x"));
}
}
l Groovy Shell 의 evaluate()방법 으로 지정 한 파일 의 Groovy 스 크 립 트 를 실행 하고 실행 결 과 를 되 돌려 줍 니 다(있 으 면)
l Binding 의 setProperty()방법 을 사용 하여 Groovy 스 크 립 트 가 실행 되 기 전에 필요 한 속성 값 을 설정 할 수 있 습 니 다.Groovy Shell 대상 을 만 들 때 이 Binding 대상 을 제공 합 니 다.
l 마찬가지 로,다음 코드 에서 사용 할 수 있 도록 Binding 의 getProperty()방법 을 사용 하여 Groovy 스 크 립 트 가 실 행 된 후에 지정 한 속성 값 을 얻 을 수 있 습 니 다.
l Groovy 스 크 립 트 에서 정의 하 는 변수(예 를 들 어 x)는 Binding 의 속성 으로 접근 할 수 있 습 니 다.
l 위의 예 를 통 해 알 수 있 듯 이 자바 에서 Groovy 스 크 립 트 를 실행 하면 입력 도 할 수 있 고 출력 도 할 수 있 습 니 다.따라서 Groovy 스 크 립 트 를 기능 모듈 로 하여 구체 적 인 기능 을 실현 하여 인 코딩 효율 을 높 일 수 있 습 니 다.
3.자바 에서 Groovy 코드 를 동적 으로 불 러 오고 실행 합 니 다.
import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyObject;
import java.io.File;
public class DynamicGroovy {
private GroovyObject groovyObject;
public Object getProperty(String name) {
return groovyObject.getProperty(name);
}
public Object invokeScriptMethod(String scriptName, String methodName, Object[] args) {
ClassLoader parent = getClass().getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
try {
Class groovyClass = loader.parseClass(new File(scriptName));
groovyObject = (GroovyObject) groovyClass
.newInstance();
return groovyObject.invokeMethod(methodName, args);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
DynamicGroovy dynamicGroovy = new DynamicGroovy();
Object[] params = {new Integer(2)};
Object result = dynamicGroovy.invokeScriptMethod("src/Foo.groovy", "run", params);
System.out.println(result);
System.out.println(dynamicGroovy.getProperty("x"));
}
}
l Groovy ClassLoader 를 사용 하면 자바 프로그램 에서 Groovy 클래스 를 동적 으로 불 러 오고 실행 할 수 있 습 니 다(호출 방법)
l GroovyClassLoader 의 parseClass()방법 은 지정 한 파일 의 Groovy 스 크 립 트 를 분석 하여 해당 하 는 Groovy 클래스 를 생 성하 고 불 러 옵 니 다.
l Groovy Object 인터페이스의 인 스 턴 스 를 만 들 수 있 습 니 다.invokeMethod()방법 으로 Groovy 류 를 호출 하 는 방법 입 니 다.
l invokeMethod()방법의 두 매개 변 수 는 각각 Groovy 류 의 방법 이름과 이 방법 에 전 달 된 매개 변수 목록 배열 에 대응 합 니 다.
l Groovy Object 의 getProperty()방법 으로 Groovy 류 의 지정 속성 치 를 얻 을 수 있 습 니 다.
l 여 기 는 Groovy 류 에 매개 변수 값 을 직접 전달 하 는 방법 입 니 다.앞의 방식 이 아니 라 Binding 의 속성 을 통 해 간접 적 으로 매개 변수 값 을 Groovy 류 에 전달 하 는 방법 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android Build.Gradle 설명 🌟Gradle은 Android 애플리케이션의 개발 단계를 자동화하는 빌드 시스템입니다. Gradle 시스템에서 Java 플랫폼용 코드를 작성하는 동안 우리는 매우 간단한 언어인 Groovy 프로그래밍 언어를 사용합니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.