groovy是基于JVM的一种敏捷动态语言,可以在不改动正在运行着程序的情况下为系统动态增加特性
方法一:通过类加载
import groovy.lang.Binding; import groovy.lang.GroovyClassLoader; import groovy.lang.Script; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.List; import org.codehaus.groovy.runtime.InvokerHelper; import com.google.common.collect.Maps; public class GroovyTest { static class MyBinding extends Binding { private HashMap<String, Object> variables = Maps.newHashMap(); public void setVariable(String name, Object binding) { variables.put(name, binding); } public Object getVariable(String name) { return variables.get(name); } } public static void main(String[] args) { String log = "Hi, test one, split with comma"; GroovyClassLoader classLoader = new GroovyClassLoader (); Class<?> scriptClass = classLoader.parseClass(getGroovyString()); Script script = InvokerHelper.createScript(scriptClass, new MyBinding()); List<String> ret = (List<String>)script.invokeMethod("parse", new Object[]{log}); System.out.println(ret); } private static String getGroovyString() { StringBuilder ret = new StringBuilder(); BufferedReader reader = new BufferedReader(new InputStreamReader(GroovyTest.class.getClassLoader() .getResourceAsStream("GroovyScript"))); String line; try { while ((line = reader.readLine()) != null) { ret.append(line).append("\n"); } } catch (IOException e) { throw new RuntimeException(e); } return ret.toString(); } }
测试结果为:
其中文本文件GroovyScript为
import org.apache.commons.lang.StringUtils;
List<String> parse(String log) {
List<String> ret = new ArrayList<String>();
for (field in StringUtils.split(log, ",")) {
ret.add(field);
}
return ret;
}
方法二:通过evaluate
@Test public void test() { Binding binding = new Binding(); binding.setVariable("$name", "zhiyuan"); binding.setVariable("$age", 28); binding.setVariable("$salary", 1000); GroovyShell shell = new GroovyShell(binding); String groovyExp = "return ($name.contains('hiy') && $age > 27) || $salary <= 1000"; Boolean val = (Boolean)shell.evaluate(groovyExp); if (val) { System.out.println(groovyExp); } }
相关推荐
Grails是一个基于Groovy语言的开源Web应用框架,它简化了开发过程,提供了丰富的功能,而Groovy则是一种面向Java平台的动态编程语言,它的设计目标是提高开发者的生产力。 Groovy语言: Groovy是Java平台上的一个...
Groovy是一种动态、灵活的编程语言,它是在Java虚拟机(JVM)上运行的,因此与Java语言有着紧密的联系。Groovy的设计目标是为了提高开发者的生产力,它提供了简洁的语法,支持元编程和面向切面编程,使得编写代码...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
本文将介绍十五种常用的Java开发工具及其简单的工作环境概述。 #### 1. JDK (Java Development Kit) JDK是Java的核心工具集,包含了编译器、解释器、调试器等必要的工具,是所有Java开发者的基础。JDK支持三种主要...
Groovy,一种强大的、动态类型的JVM语言,以其简洁的语法和对Java的无缝集成,深受广大开发者喜爱。而Lucene-Sugar,则是在流行的全文搜索引擎库Apache Lucene基础上,增添了一些甜美的“糖分”,使得操作变得更加...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
- 本章将介绍如何使用这两种技术来构建实时通信的应用程序。 ##### 18. **JavaFX in the Enterprise** - **JavaFX** 是一个用于构建桌面和移动应用的平台。 - 本章将探讨如何使用JavaFX构建企业级用户界面,并将其...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...
目前主流的构建工具有Maven和Gradle两种。 - **Maven**:以约定优于配置的原则,提供了一套标准的生命周期,便于管理项目构建过程中的依赖关系。 - **Gradle**:基于Groovy语言编写,提供更灵活的配置方式,并且...