我是靠谱客的博主 优美小松鼠,最近开发中收集的这篇文章主要介绍Groovy语言学习--语法基础(3),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

侧重点可能是groovy metaClass基元类的概念,有点像java的反射,因为java反射目前基本也没研究过,就mark一下,后续若有用到就深入研究一下。

基础语法的东西貌似差不多八九不离十了,后面再写个语法基础(4) 就准备将groovy脚本和java的融合研究一下,深入研究一下其作为脚本如何完成规则引擎的一些职责。

 

package groovy.model


/*class Test3 {

}*/


def map = [key1:"john",key2:"tom",key3: "rose"]
map.each { println it }

map.each({key,value -> println "$key : $value"})

/*
 * 使用默认构造方法实例化Person类
 */

def person1 = new Person()

person1.setName("lucky")
person1.setAge(20)
person1.name = "jack"
println person1
/*
 * groovy 风格
 */
def person2 = new Person(['name':'gaga','age':22])
println person2

/*
 * java代码 防止空指针
 */
if(person2 !=null) {
    
    println "check right"
}

/*
 * groovy 代码防止空指针
 */

person2?. println "welcome no null point"

/*
 * 可变长参数 在调用的的时候可以使用任意个数的参数
 */
int sum(int...var) {
    def total = 0
    for(i in var) {
        total +=i    
    }
    return total
}
println sum(1,2,2)

/*
 *枚举 
 */
enum Day{
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,

    THURSDAY, FRIDAY, SATURDAY
}

println Day.FRIDAY
/*
 * 同java5一样,groovy支持带构造器、属性和方法的enum
 */
enum Planet{
    MERCURY(3.303e+23,2.49376e6),
    MARS(3.303e+23,2.49376e6),
    EARTH(5.976e+24, 6.37814e6)
    
    double mass
    double radius
    Planet(double mass,double radius) {
        this.mass = mass
        this.radius = radius
    }
    
    void printMe() {
        println "${name()} has a mass of ${mass} and a radius of ${radius}"
    }
}

Planet.EARTH.printMe()
/*
 * 可以.方法查看enum相关的api 有很多
 */
println Planet.EARTH.name()

/*
 * metaClass 元类 通过元类,可以为对象增加方法 体现为groovy的动态性
 */
def message = "hello world"
print message.metaClass

//message.metaClass.methods.each { println it.name }
//message.metaClass.properties.each {println it.getKey()} 
 
  

 

转载于:https://www.cnblogs.com/slowcity/p/10162185.html

最后

以上就是优美小松鼠为你收集整理的Groovy语言学习--语法基础(3)的全部内容,希望文章能够帮你解决Groovy语言学习--语法基础(3)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部