Groovy動態解析

2021-09-08 23:12:30 字數 1866 閱讀 1588

a:前面需要說些什麼嗎?

b:不需要嗎?

a:需要嗎?

解析方式一:通過指定的paths來初始化groovyscriptengine

//

通過指定的paths來初始化groovyscriptengine

string paths = ;

groovyscriptengine gse = new

groovyscriptengine(paths);

binding binding = new

binding();

binding.setvariable("input", "world");

gse.run("groovydemo.groovy", binding);

system.out.println(binding.getvariable("output"));

groovydemo.groovy

output = "hello $!"

解析方式二:通過指定的roots來初始化groovyscriptengine

//

通過指定的roots來初始化groovyscriptengine

string roots = new string;

groovyscriptengine gsen = new

groovyscriptengine(roots);

groovyobject groovyobject = (groovyobject) gsen.loadscriptbyname("helloworld.groovy").newinstance();

string result = (string) groovyobject.invokemethod("output", "world");

system.out.println(result);

helloword.groovy

class

testscript

}

解析方式三:建立engine例項直接解析文字內容

//

建立engine例項直接解析文字內容

scriptenginemanager factory = new

scriptenginemanager();

//每次生成乙個engine例項

scriptengine engine = factory.getenginebyname("groovy");

system.out.println(engine.tostring());

assert engine != null

;bindings binding =engine.createbindings();

binding.put("date", new

date());

//如果script文字來自檔案,請首先獲取檔案內容

engine.eval("def gettime()", binding);

engine.eval("def sayhello(name,age)");

long time = (long) ((invocable) engine).invokefunction("gettime", null

);system.out.println(time);

string message = (string) ((invocable) engine).invokefunction("sayhello", "zhangsan", new integer(12));

system.out.println(message);

groovy動態語言

import groovy.transform.compilestatic import groovy.transform.typechecked 動態語言測試 typechecked 檢測語法 respondsto 檢測是否實現了某個方法 hasproperty 檢測是否含有某個屬性 compil...

spring 中使用 groovy 動態 bean

spring 中使用 groovy 動態 bean 原文出處 在 spring 中使用 groovy 等動態語言的好處就是 在伺服器上改改或新加個 groovy 檔案就可以有新的功能,不用重新打包並部署。對一些規則性的邏輯處理 動態性強的應用可以 groovy。示例下在 spring 中使用 gro...

GINA之Groovy的MOP動態特性

gina groovy in action groovy中metaclass在其動態特性中有著舉足輕重的作用,uml類圖如下 img gia中groovy方法呼叫描述如下 list 1 呼叫當前類的invokemethod方法實現 當然也可能是 傳遞給metaclass 呼叫getmetaclass...