how directly call groovy class in java
如何在java中调用groovy的类.
java和groovy如何交互,传送数据.
java调用groovy库的优势, 不需要在团队成员强制安装groovy解释器,groovyEclipse插件(自动编译groovy脚本).就能增强java本身处理文件系统,xml解析等的能力.
第一种是调用groovy官方库里的类
第二种是调用自己写的groovy文本的类.(copy并修改自csdn 老伯伯 的文章)
缺点: 如果不安装groovy解释器和groovy Eclipse插件.就无法享受更多的对jdk 类的扩展, 已经脚本化语法的便捷.
jdk扩展见 Unmi 学习 Groovy 之文件操作 http://blog.csdn.net/kypfos/article/details/3097032
脚本语言特点 无main,直接printf
第二步: jar依赖,maven库上传.
第三步: 推广成员安装groovy解释器和groovy Eclipse插件
1. 第一种. 如果用maven的话
在pom的 依赖项里加入.
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.2.2</version>
</dependency>
或者去官网下载grovvy的jar包,导入的eclipse的class依赖中.
就可以直接在java里调用 grovvy库里的类了.
( 如果Eclipse不会自动 import groovy的类,需要在.project中新增 <nature>org.eclipse.jdt.groovy.core.groovyNature</nature> )
import groovy.util.GroovyCollections;
import java.util.List;
public static void main(String[] args) {
List<Double> lists = new ArrayList<Double>();
lists.add(0.2);
lists.add(0.3);
lists.add(0.2);
Object sum = GroovyCollections.sum(lists);
System.out.println(sum);
}
====
2 第二种. 如果是自己写的groovy 文件.
假如如下 GrovvySystemConfigRead.groovy代码
-
-
-
-
-
-
-
-
-
- class GrovvySystemConfigRead {
-
-
-
-
- static String getName(){
- return "csdn" ;
- }
- }
2.1 第一种调用,JAVA类(JavaClassCallGroovy)是可以直接调用GROOVY类(上面写好的SystemConfigRead)的。
(需要安装eclipse插件,自动把groovy文本文件编译为.class ,插件安装见
配置Groovy开发运行环境
http://blog.csdn.net/mousebaby808/article/details/7092031 or http://blog.csdn.net/fei33423/article/details/41685997
)
- public class JavaClassCallGroovy{
- public static void main(String[] args) {
- SystemConfigRead.getName();
- }
- }
2.2 第二种,以反射脚本化方式调用(不推荐),实现脚本化调用,即脚本改动后,无需编译,自动执行的目的.
这种反射化调用不仅可以用在java类调用groovy类,也可以用在java类调用java类,实现java的脚本化.
-
-
-
-
-
-
-
-
- public void groovyToJava() throws IOException, IllegalAccessException, InstantiationException {
- ClassLoader parent = getClass().getClassLoader();
- GroovyClassLoader loader = new GroovyClassLoader(parent);
-
- Class groovyClass = loader.parseClass(new File("site/grails-app/utils/com/ingping/core/SystemConfigRead.groovy"));
-
- GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
-
- System.out.println("" + groovyObject.invokeMethod("readEmailCodeUrl", null));
- }