关闭

初见Groovy

标签: groovyjava语言
170人阅读 评论(0) 收藏 举报
分类:

创建groovy类

class GroovyBeans{
    private String name;

    GroovyBeans(String theName){
        name = theName;
    }
}
  • groovy类自动生成getter,setter方法
  • class默认访问修饰符为public

使用groovy类

def bean = new GroovyBeans("hello")
bean.name = "change hellow" //相当于setName
println bean.name //相当于System.out.println(bean.getName());
  • bean.title不是类属性的直接访问,它是访问该属性访问者方法的快捷方式
  • def是groovy中用来定义动态变量的关键字,故new后类均不用强制转化。

字符串处理

 def name = 'hello'
 println "$name world"
  • $name将被替换为hello
  • groovy中可用单引号表示字符串
  • -

数字处理

def x = 1
println x.plus(2)
  • 一切groovy变量都是类

集合处理

  • List
def mylist = [1,2,3,4,5]
println mylist[0]  //类数组访问形式
mylist[6] = 6  //数组扩展
/*
[]将被解析成ArrayList
*/
  • Map
def myMap = [1:'n1',3:'n3']
println myMap[1] 
  • Range
def myRange = 1..10
assert myRange.size() == 10
assert myRange.from == 1
assert myRange[0] == 1
assert myRange.contains(1) == true //assert断言,经常出现在groovy中,用于单元测试

闭包

[1,2,3].each {num -> println num}
  • 闭包即{}中的代码块,相当于java中的匿名类,也就是Lambda expression,面向函数语言用法

循环

 for (i in 0..9)
 {
 //代码块
 }
 list.each{/*闭包/}
  • 常用以上两种
  • groovy无 for(int i;i<10;i++) 类型循环语句

java环境中运行groovy

加载的两种方式:

  1. 使用groovyc编译所有的.groovy为java的.class文件,把这些 *.class文件放在java类路径中,通过java类加载器来加载这些类。
  2. 通过groovy的类加载器在运行时直接加载.groovy文件并且生成对象,在 这种方式下,没有生成任何.class,但是生成了一个java.lang.Class对象的实例,也就是说,当groovy代码中包括一个new MyClass()的表达式时,并且也有一个MyClass.groovy的文件,这个文件将被解释,一个MyClass的类型将被产生并且增加到类加载器中,在代码中将像从*.class一样获取到MyClass对象.
  • java虚拟机并不考虑代码表层是怎么样的,只要字节码符合Class结构即可被JVM识别运行。

Groovy的动态特性

println evaluate('1+1')
  • 运行时生成类
  • 根据代码的任意字符串来运行的能力是脚本语言的显著特征
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1507次
    • 积分:83
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条