Java和groovy相互呼叫
java interface
- package groovy;
- public interface IFoo {
- public Object run(Object foo, Object bar);
- }
groovy implements
- package groovy;
- class Foo implements IFoo {
- def x
- public Object run(Object foo, Object bar) {
- println 'Hello World!'
- x = 123
- println foo * 10
- println bar
- return 'success'
- }
- }
java call groovy
- package groovy;
- import groovy.lang.GroovyClassLoader;
- import groovy.lang.GroovyObject;
- import java.io.File;
- public class InvokeGroovy {
- public static void main(String[] args) {
- ClassLoader cl = new InvokeGroovy().getClass().getClassLoader();
- GroovyClassLoader groovyCl = new GroovyClassLoader(cl);
- try {
- @SuppressWarnings("rawtypes")
- Class groovyClass = groovyCl.parseClass(new File(InvokeGroovy.class.getResource("/groovy/Foo.groovy").toURI()));
- IFoo foo = (IFoo) groovyClass.newInstance();
- System.out.println(foo.run(new Integer(2), "More parameter..."));
- System.out.println("=============================");
- GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
- System.out.println(groovyObject.invokeMethod("run", new Object[]{new Integer(2),"More parameter..."}));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
java execute groovy script
- package groovy;
- import groovy.lang.Binding;
- import groovy.lang.GroovyShell;
- import javax.script.ScriptEngine;
- import javax.script.ScriptEngineManager;
- import javax.script.ScriptException;
- public class TestEval {
- public Object doit() {
- ScriptEngineManager factory = new ScriptEngineManager(TestEval.class.getClassLoader());
- ScriptEngine scriptEngine = factory.getEngineByName("groovy");//或者"Groovy" groovy版本要1.6以上的
- try {
- scriptEngine.put("test", "hello world!");
- scriptEngine.put("outer", this);
- scriptEngine.eval("println test; outer.java_out()");
- } catch (ScriptException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- Binding bb = new Binding();
- bb.setVariable("test", "hello world!");
- bb.setProperty("outer", this);
- GroovyShell gs = new GroovyShell(bb);
- return gs.evaluate("println test; outer.java_out()");
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- TestEval te = new TestEval();
- te.doit();
- }
- public void java_out(){
- System.out.println("out from java");
- }
- }
相關文章
- webview js和java相互呼叫WebViewJSJava
- Android-Java 和 JavaScript 相互呼叫AndroidJavaScript
- java中呼叫groovy指令碼Java指令碼
- C和Go相互呼叫Go
- js和vue方法的相互呼叫(iframe父子頁面的方法相互呼叫)。JSVue
- groovy與javah互相呼叫Java
- python和c++的相互呼叫教程PythonC++
- 在Java中呼叫Groovy方法的又一種方法:使用介面Java
- OC 與 Swift 相互呼叫Swift
- Android JNI開發系列之Java與C相互呼叫AndroidJava
- 前端框架iframe相互呼叫方法前端框架
- Groovy 2.0.6和Groovy 2.1 beta版本釋出
- 微服務之間的相互呼叫微服務
- c與c++的相互呼叫C++
- AndroidJS相互呼叫詳解AndroidJS
- iOS中JS和OC相互呼叫實現混合開發(JavaScriptCore)iOSJSJavaScript
- 原生實現C#和Lua相互呼叫-Unity3D可用C#Unity3D
- CXX庫提供Rust和C+ 之間的安全相互呼叫Rust
- Hybrid App開發模式中, IOS/Android 和 JavaScript相互呼叫方式APP模式iOSAndroidJavaScript
- c# winform as3相互呼叫C#ORMS3
- [轉]C# winform與Javascript的相互呼叫C#ORMJavaScript
- 用Groovy思考第一章用Groovy簡化Java程式碼Java
- Groovy + Java 混合程式設計方案:GMavenJava程式設計Maven
- Java之外選擇Scala還是Groovy?Java
- Groovy 2與Java的效能對比Java
- go語言與c語言的相互呼叫GoC語言
- 鴻蒙HarmonyOS實戰-Web元件(前端函式和應用側函式相互呼叫)鴻蒙Web元件前端函式
- groovy
- Java動態指令碼Groovy,高階啊!Java指令碼
- JAVA與groovy指令碼的結合使用Java指令碼
- Vue--子元件之間相互呼叫及傳值Vue元件
- oc與swift檔案的相互呼叫方式——橋接Swift橋接
- C#程式碼與javaScript函式的相互呼叫C#JavaScript函式
- Groovy探索之Gpath和List的結合 更加Groovy風格的程式碼
- Oracle Package返回遊標 和 java呼叫OraclePackageJava
- WebAssembly實踐指南——C++和Rust透過wasmtime實現相互呼叫例項WebC++RustASM
- 提高Groovy品質 Groovy 1.5.2釋出
- java 物件與xml相互轉換Java物件XML