侧重点可能是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()}

Groovy语言学习--语法基础(3)的更多相关文章

  1. Groovy语言学习--语法基础(5)

    至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实 ...

  2. Groovy语言学习--语法基础(1)

    2018年11月末,从上家公司离职后进入现在的公司.进入项目以来,发现项目中有很多groovy脚本,以前没接触过groovy,抽时间系统地学一下,也方便后期项目的开发和维护. groovy和java的 ...

  3. Groovy语言学习--语法基础(4)

    语法基础到此就结束了,毕竟其和Java许多地方并无差别.groovy作为脚本,是为了能更好地随业务变化调整规则,我根据自己对规则的理解 通过一张图简单描述一个groovy脚本场景:由于货币膨胀,经济收 ...

  4. Groovy语言学习--语法基础(2)

    集合和闭包 因为之前没接触过C++等,对指针也一窍不通.个人不成熟的了解 闭包是一种数据类型,可以很方便的执行一段独立的代码 简化方法的调用 package groovy /** * Groovy容器 ...

  5. c语言学习之基础知识点介绍(三):scanf函数

    本节继续介绍c语言的基础知识点. scanf函数:用来接收用户输入的数据. 语法:scanf("格式化控制符",地址列表); 取地址要用到取地址符:&(shift+7) 例 ...

  6. oc语言学习之基础知识点介绍(五):OC进阶

    一.点语法介绍 /* 以前封装后,要给属性赋值,必须调用方法 这样做,有两个缺点: 1.代码量多,调用方法要写的东西多. 2.看起来并不像是给属性赋值,也不像取值. 我们用点语法就可以更好的解决! 点 ...

  7. oc语言学习之基础知识点介绍(四):方法的重写、多态以及self、super的介绍

    一.方法重写 /* 重写:当子类继承了父类的方法时,如果觉得父类的方法不适合,那么可以对这个方法进行重新实现,那么这个就重写. 注意:也就是说,一定只能发生在父类和子类关系中. 然后是子类重新实现父类 ...

  8. oc语言学习之基础知识点介绍(二):类和对象的进一步介绍

    一.类.对象在内存中的存储 /* 内存分区: 栈:局部变量 堆:程序员自己写代码申请开辟的 程序员自己维护,编译器现在帮我们自动优化了,它在合适的给我们加上了释放空间的语句,所以我们现在写的对象不会造 ...

  9. oc语言学习之基础知识点介绍(一):OC介绍

      一.第一个OC程序 #import <Foundation/Foundation.h> //导入头文件 int main(int argc, const char * argv[]) ...

随机推荐

  1. Android SDK manager里面什么是必须下载的?

    最近公司来了位新同事,由于需要配置Android环境,但是在配置的时候却发现sdk很大,很占用空间,想复制给同事也觉得不方便,于是根据下面的图删除了一些不必要的api. 根据官方文档的描述SDK To ...

  2. LeetCode单排日记

    初衷 之前有研究过一段时间数据结构与算法,但平时使用的不多,就连排序都很少用(自从JDK8有了Stream,就再也没有手写排序了.),所谓用进废退,时至今日,能记住的已经不多了,还记得之前有一次面试, ...

  3. VMware虚拟机安装CentOS系统图文教程

    上一篇:VMware虚拟机安装教程详解图文         上一篇文章给大家介绍了虚拟机的安装,本文为大家详细介绍一下如何在虚拟机安装CentOS系统:   一:VMware虚拟机创建:   1:打开 ...

  4. 单用户实例添加DB账号

    停止实例 net stop mssqlserver 以单用户启动实例,指定以sqlcmd连接 net start mssqlserver /m"SQLCMD" 以单用户启动实例,指 ...

  5. Alwayson查询主副本不同的JOB,Linkserver,Login

    DECLARE @SQL AS VARCHAR(5000), @Primary AS VARCHAR(50), @Secondy AS VARCHAR(50); SELECT @Primary='AA ...

  6. LIGER UI GRID TREE解决打开子树的时候,母树图标全部变成+

    1.为data增加Expanded.当打开时告知已打开 关闭时告知已关闭 2.修改ligergrid 如果是打开状态,则open

  7. Pycharm用鼠标滚轮控制字体大小

    一.pycharm字体放大的设置 File —> setting —> Keymap —>在搜寻框中输入:increase —> Increase Font Size(双击) ...

  8. Java运行Jar包内存配置

    java -jar -Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxPermSize=256M car.jar 说明: 1.堆内存:最小1024M,最大153 ...

  9. MySQL 初识别语句,数据库、表、行的增删改查

    一.MySQL 开场语句 1.登陆 mysql -u root -p ; #回车然后输入密码 2.退出 eixt | quit #二者选其一 3.查看数据文件路径(配置文件中学习的) show glo ...

  10. ORCFILE IN HDP 2: BETTER COMPRESSION, BETTER PERFORMANCE

    ORCFILE IN HDP 2: BETTER COMPRESSION, BETTER PERFORMANCE by Carter Shanklin   The upcoming Hive 0.12 ...