`
laodaobazi
  • 浏览: 277538 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Groovy应用(基本操作)

阅读更多

一、Groovy基本操作

Base.groovy

package com.jlee

import java.text.SimpleDateFormat
import java.util.Calendar


/**
 * @author JLee
 *
 */
public class Base{

	public test(){
		"***************";
	}
	
	//	7、闭包
	def foo(temp){
		temp.call("closure parameter") ;
		temp.call([1,2].collect{it*2}) ;
	}
	
	public static void main(args){
		
		//1、单行单条语句可以不用写“;”
		println "不用 分号 结尾"
		println "单行多条语句要有 分号"; println "但是建议不论什么情况都加上 分号 结尾"
		
		//2、语句可以跨多行
		def arr = [1,
		       2,
		       3,
		       4];
		println arr ;
		
		//3、支持表达式
		String str = "Hello World".replaceAll("World","Groovy") ;
		println "new string is ${str}" ;
		
		//4、可以直接调用Java类
		def sdf = new SimpleDateFormat("yyyy-MM-dd") ;
		def date = sdf.parse("2011-11-22") ;
		def cal = Calendar.getInstance() ;
		cal.setTime(date) ;
		println "The Time is ${cal.get(Calendar.YEAR)}-${cal.get(Calendar.MONTH)}-${cal.get(Calendar.DAY_OF_MONTH)}" ;
		
		//5、定义方法的时候返回类型可以不写(默认是Object),
		//并且可以不用写 return,调用方法时可以不用括号如 println,
		//只要有参数且没有歧义
		def sss = new Base().test() ;
		println sss ;
		
		//6、传递命名参数
		//只实现Map方法调用与JavaBean构造
		Bean bean = new Bean(id : "12123" , name : "JLee");
		//直接可以访问 private 的 field
		println bean.id + "   " + bean.getName() ;
		
		//7、闭包
		def closure = { println it } ;
		new Base().foo(closure) ;
		
		//8、动态类型
		def dynamicType = [ name:"Jlee" , age:24] ;
		println dynamicType ;
		dynamicType = "*********" ;
		println dynamicType ;
		
		//9、Groovy中的 == 等于 Java 中的 equals
		// === 相当于 Java 中的 ==
		String string = "str" ;
		if(string == "str"){
			println "   ==    " ;
		}
		if(string.equals("str")) {
			println "    ===    " ;
		}
		
		//10、对于大段文字可以用三个引号来定义
		def longString = """ ssssssssssssssssssssssssssss """ ;
		println longString ;
		
		//11、".." 包含左右边界
		//"..." 不包含右边界
		def rang1 = 1..9 ;
		rang1.each{ print "${it}," ; };println "" ;
		println rang1 instanceof java.util.List ;
		
		Map map1 = [:]; //定义空Map
		Map map2 = [name:'JLee' ,sex:'男']; //定义Map
		println "map1 size ${map1.size()} , value : ${map1}" ;
		println "map2 size ${map2.size()} , value : ${map2}" ;
		
		println map2.get('name');
		map1.put("element" ,[1,2,3]);
		println "map1 size ${map1.size()} , value : ${map1}" ;
		
		//Groovy下标操作符的应用
		String stringStr = "abcdefghijklmnopqrst" ;
		List list = [1,2,3,4,5] ;
		def rangesRan = 6..9 ;
		Map mapmap = [element1:'222',element2:'333333'];
		println stringStr[2] ;
		println list[2..4] ;
		println mapmap['element1'] ;
		println list[-2] ;
		
		
		
		
		//static{println ''}不支持静态块
		//do{println "ddd" ;}while(true);不支持
		
		for(int i=0 ;i<10;i++){
			print i ;
		}
		def j=0 ;
		while(j==0){j++;println " ";}
		println false ? 'a' : 'b' ;
		
		//访问数据库
		String sqlStr = "select * from user ";
		def sql = groovy.sql.Sql.newInstance("jdbc:mysql://localhost/mysql","root","root","com.mysql.jdbc.Driver");
		sql.eachRow(sqlStr){
			row->
			println "${row[0]}, ${row.User}";
		};
		
	}
	
	
	
}

 

 

 二、Groovy与Java之间的相互调用

IFoo.java

package com.jlee;
/**
 * @author Jlee
 * @date 2011-11-19
 * @desc Java 接口
 */
public interface IFoo {
	 public Object run(Object foo);   
}

 Foo.groovy

package com.jlee ;
import java.lang.Override
/**
 * @author Jlee
 * @date 2011-11-19
 * @desc 实现Java 接口的 Groovy 类
 */
public class Foo implements IFoo {
	@Override
	 public Object run(Object foo){
		 println 'Hello World!' ;
		 /*******************************
		  * 实例化Java实现Foo接口的Foo2类*
		  * Groovy中调用Java                      *
		  * ******************************/
		 Foo2 f2 = new Foo2() ;
		 def str = f2.run(2);
		 println str ;
		 return foo*10;
	 }	
	 //直接运行该Groovy类
	 public static void main(args){
		 Foo f = new Foo();
		 f.run(3)
	 }
}

 

Foo2.java

package com.jlee;
/**
 * @author Jlee
 * @date 2011-11-19
 * @desc 实现Java 接口的 Java 类
 */
public class Foo2 implements IFoo {

	public Object run(Object foo) {
		System.out.println("Foo2里面输出 : "+foo);
		return "foo2";
	}

}

 

InvokeGroovy.java

package com.jlee ;

 import groovy.lang.GroovyClassLoader;  
 import java.io.File;  
 /**
  * @author Jlee
  * @date 2011-11-19
  * @desc Java调用Groovy
  */
 public class InvokeGroovy {   
   
     public static void main(String[] args) {  
         ClassLoader cl = new InvokeGroovy().getClass().getClassLoader();  
         GroovyClassLoader groovyCl = new GroovyClassLoader(cl);  
         try {  
             Class groovyClass = groovyCl.parseClass(new File("src/com/jlee/Foo.groovy"));  
             IFoo foo = (IFoo) groovyClass.newInstance();  
             System.out.println(foo.run(new Integer(2)));  
         } catch (Exception e) {  
             e.printStackTrace();  
         }  
     }  
   
 }  

 

分享到:
评论

相关推荐

    groovy入门经典,groovyeclipse 插件

    入门Groovy,首先需要了解其基本语法结构。Groovy的语法与Java类似,但更简洁。例如,类定义可以省略public关键字,变量声明可以省略类型,只需写出变量名即可。Groovy也支持使用`def`关键字来定义未指定类型的变量...

    eclipse安装groovy插件的步骤

    通过上述步骤,您已经完成了在 Eclipse 中安装 Groovy 插件的过程,并学会了如何使用 Groovy 进行基本的编程操作。Groovy 是一种灵活且功能强大的脚本语言,非常适合用于自动化任务、单元测试以及快速应用开发等领域...

    groovy速查手册

    这些特性使得Groovy不仅能够作为脚本语言使用,同时也非常适合于开发大型应用。 #### 二、Groovy与Java的集成 - **跨编译**:通过Groovy的编译器(`groovyc`),Ant任务或者集成开发环境(IDE)的支持,可以将...

    groovy in action 中文版 2017.11

    Groovy还提供了重载操作符的能力,允许程序员为基本数据类型或自定义类型编写新的操作符行为。在字符串处理方面,Groovy引入了GString,这种字符串可以包含表达式,能够在运行时被评估。同时,Groovy还引入了对正则...

    Groovy.in.Action.2nd.Edition.pdf

    6. Groovy的使用场景:书中详细介绍了Groovy在多个领域的应用,包括并行和函数式编程、对象迭代方法、集合和映射增强、多线程和进程控制、文件和I/O流处理、数据库操作(SQL和NoSQL)等。 7. Web开发、测试、GUI...

    groovy in action.pdf

    本书由Manning Publications出版,全面覆盖了Groovy语言的基础知识、高级特性以及在实际项目中的应用。 ### Groovy简介 Groovy是一种灵活的、面向对象的脚本语言,它运行于Java平台之上,充分利用了Java的生态系统...

    Grails&Groovy学习资料

    1. Groovy基础:了解Groovy的基本语法、类和对象、集合操作、文件I/O、网络编程等。 2. Grails架构:理解MVC(模型-视图-控制器)设计模式,以及Grails中的Controller、Service、Domain Class等组件。 3. GORM和...

    groovy包及相关学习资料

    1. **Groovy的基本特性** - **简洁语法**:Groovy的语法比Java更加简洁,它支持方法调用的点语法,以及闭包和内建的GString(类似模板字符串)。 - **动态类型**:Groovy允许开发者在不指定变量类型的条件下编写...

    groovy学习

    这篇博客文章可能探讨了Groovy的基本语法、特性以及如何在实际项目中应用。 在Groovy的学习过程中,首先会接触到它的基本语法结构,如变量声明、控制流语句(如if-else、for循环、while循环)和函数定义。Groovy的...

    groovy模板

    Groovy模板是一种强大的脚本语言,它在Java平台上运行,并且与Java紧密集成。...通过深入研究这些文件,我们可以学习到Groovy在实际项目中的应用方式,以及如何利用其特性来简化和增强Java平台上的开发工作。

    groovy+in+action

    由于这些特性,Groovy广泛应用于构建脚本、单元测试、Web应用开发等多个领域。 #### 三、核心知识点解析 **1. Groovy的基础** - **语法简介**:Groovy的语法与Java非常相似,但又有所扩展和改进。例如,Groovy...

    groovy脚本实现对数据库的增删改查

    通过这个文件,你可以学习如何将这些基本操作应用于实际的数据库操作。Groovy的动态特性使得代码更易于阅读和编写,而无需编译,这极大地提高了开发效率。 在实际项目中,Groovy还常与其他工具结合,如Grails(一个...

    Groovy学习笔记

    ### Groovy学习笔记知识点梳理 ...通过以上内容的学习,读者将能够了解Groovy的基本概念、主要特性和开发环境设置方法,同时也能掌握Groovy的基本语法和一些进阶技巧。这些知识点为后续深入学习提供了坚实的基础。

    groovy文档

    在Groovy中,所有的东西都是对象,即使是基本类型也会自动封装为对应的对象。这使得Groovy在处理数据时更加一致和强大。此外,Groovy支持可选类型的概念,允许开发者在需要时指定类型,以增强代码的可读性和安全性。...

    groovy 1.7官方教程

    - **简单示例**:“Hello World”脚本展示了Groovy的基本语法: ```groovy def name = 'World' println "Hello $name!" ``` - **面向对象示例**:通过创建类`Greet`来实现更复杂的“Hello World”示例,体现了...

    Groovy学习笔记.pdf

    Groovy结合了Python、Ruby和Smalltalk等语言的特性,并与Java无缝集成,使得开发者可以在Java应用中充分利用Groovy的优势。 在开始Groovy的学习之前,首先要了解如何设置Groovy开发环境。这通常包括安装Java ...

Global site tag (gtag.js) - Google Analytics