文章分类 -  groovy

摘要:Groovy学习目录-传送门 元编程(Metaprogramming)->百度百科 Groovy语言支持两种类型的元编程:运行时元编程和编译时元编程。 第一个允许在运行时改变类模型和程序的行为,而第二个只在编译时发生。 两者都有利弊,我们将在本节详细介绍。 运行时元编程 使用运行时元编程,我们可以在 阅读全文
posted @ 2019-07-22 11:04 天涯海角路 阅读(561) 评论(0) 推荐(0) 编辑
摘要:Groovy探索之Expando类<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> Expando类是Groovy语言中的一个相当有趣的类,它的作用类似于GroovyBean类,但比GroovyB 阅读全文
posted @ 2019-07-22 11:02 天涯海角路 阅读(283) 评论(0) 推荐(0) 编辑
摘要:Groovy探索之MOP 八 运行期内给类和对象添加属性或方法 我们都知道,在Groovy语言中,我们可以使用MOP特性在运行期内添加属性或方法。这种添加包括两个层面的添加: 第一, 是给一个类添加属性或方法。也就是说,如果我们在运行期内给一个类添加了属性或方法,那么添加了以后,所有这个类实例化的对 阅读全文
posted @ 2019-07-22 11:01 天涯海角路 阅读(282) 评论(0) 推荐(0) 编辑
摘要:Class当然是Groovy语言从Java语言继承来的,这就是说Groovy语言也继承了Java语言的反射机制。这意味着我们能够像在Java语言里使用反射那样,在Groovy语言里写出诸如下面的代码: 当然,我们在Groovy语言里很少会这样用了,因为Groovy语言的MOP机制比起Java语言的反 阅读全文
posted @ 2019-07-22 10:55 天涯海角路 阅读(360) 评论(0) 推荐(0) 编辑
摘要:人们一直以来都认为 Groovy 是一种面向 JVM 的动态 编程语言。在这期 实战 Groovy 文章中,您将了解元编程— Groovy 在运行时向类动态添加新方法的能力。它的灵活性远远超出了标准 Java 语言。通过一系列代码示例(都可以通过 下载 获得),将认识到元编程是 Groovy 的最强 阅读全文
posted @ 2019-07-22 10:51 天涯海角路 阅读(231) 评论(0) 推荐(0) 编辑
摘要:Groovy探索之MOP 三 Class、MetaClass和ExpandoMetaClass Class当然是Groovy语言从Java语言继承来的,这就是说Groovy语言也继承了Java语言的反射机制。这意味着我们能够像在Java语言里使用反射那样,在Groovy语言里写出诸如下面的代码:im 阅读全文
posted @ 2019-07-22 10:50 天涯海角路 阅读(315) 评论(0) 推荐(0) 编辑
摘要:Groovy 支持两种元编程:运行时元编程和编译时元编程。第一种方式允许在运行时改变类模式和程序行为,第二种方式则只发生在编译时。两种方式都有一定的优缺点,下面就来详细介绍一下它们。 1. 运行时元编程 运行时元编程,可以将一些决策(诸如解析、注入甚至合成类和接口的方法)推迟到运行时来完成。为了深入 阅读全文
posted @ 2019-07-22 10:46 天涯海角路 阅读(317) 评论(0) 推荐(0) 编辑
摘要:使用ExpandoMetaClass和Category可以实现元编程。ExpandoMetaClass可以动态添加和修改类的构造器,方法和属性。Category只能动态添加和修改类的方法。 当使用EMC动态添加或修改方法时,闭包Closure作为方法体被传入,它的delegate指向调用此方法的实例 阅读全文
posted @ 2019-07-22 10:42 天涯海角路 阅读(563) 评论(0) 推荐(0) 编辑
摘要:现在讲的都是运行时元编程,而编译时元编程 比如 ButterKnife 使用AOP,进行事件和View的寻找和绑定运行时元编程,方法注入 3中方式 category 分类注入 (和继承类似) meteclass (ExpandoMetaClass) 使用mixin 混合(和category类似,创建 阅读全文
posted @ 2019-07-22 10:40 天涯海角路 阅读(227) 评论(0) 推荐(0) 编辑
摘要:首先说下调用方法的方式:class Psrson{ def name def dream() { System.out.println 'i have a dream' }} 1 2 3 4 5 6 7 8 第一种方式: def p = new Psrson(‘Test’) p.dream() 第二 阅读全文
posted @ 2019-07-22 10:39 天涯海角路 阅读(798) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示