`
月迷津渡
  • 浏览: 102020 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Groovy基础——接口的实现方式

 
阅读更多

前些天我们谈到Groovy闭包的强大特性,而今天我们来谈谈一个相对比较轻松的话题——Groovy中的接口可以怎么来实现。

 

通俗的类似Java的实现我们就不在此赘述。

接下来我们一一来看:

 

1.用闭包来实现单方法接口:

interface Test{
	def one(String a)
}
def test = {it.concat('b')} as Test
assert test.one('a') == 'ab'

 这里我们用闭包实现了一个含有单个方法的接口接口中的it表示方法参数a。然后对a执行concat方法。as Test是闭包实现接口的一种实现形式。

 

2.用闭包来实现多方法接口:

interface X{void f();void g(int n);void h(String s, int n);}
x = {Object[] args -> println "method called with $args"} as X

x.f()
x.g(1)
x.h("hello", 2)

 这里我们先定义了一个多方法的接口。和1中类似的args是X接口中每个方法的方法参数集合。

 

3.用map来实现多方法接口:

impl = [
	i: 10,
	hasNext: { impl.i>0 },
	next: { impl.i-- }	
]

iter= impl as Iterator
while(iter.hasNext()) println iter.next()

 用map来实现多方法的接口,是一种更通用的做法。

 

4.只实现需要的接口方法。

interface X
{ void f(); void g(int n); void h(String s, int n); }

x = [ f: {println "f called"} ] as X
x.f()
//x.g()    // NPE here
 对于map实现的多方法的接口。我们仅需要对需要实现的方法,在map中进行声明即可。对于没有声明的方法,如果调用的话。会出现异常。
分享到:
评论

相关推荐

    最新 groovy开发包

    1. **Groovy基础知识**:Groovy语法简洁,支持面向对象编程、函数式编程和元编程。它的动态类型系统允许开发者快速编写代码,同时提供了静态类型的选项来增强代码的可读性和安全性。Groovy的闭包(Closure)是其核心...

    Groovy in Action.pdf

    在面向对象编程方面,《Groovy in Action》深入讨论了类、接口、继承、多态等概念,并介绍了Groovy中的闭包——这是Groovy的一个核心特性,它使得函数式编程风格得以实现。此外,书中还涵盖了Groovy对Java集合库的...

    osgi进阶——11111

    在设计部分,作者强调了OSGi框架的基础功能和设计思想,如模块化、组件化,以及如何以OSGi的方式设计留言板模块。实现部分涉及到环境准备、模块化开发,包括了留言列表、新增留言、管理员登录以及删除留言等模块的...

    安卓Andriod源码——基于百度地图实现的定位功能.zip

    `MyLocationListener`是一个自定义的接口实现,用于处理定位结果: ```java public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) {...

    Android热补丁动态修复实践,android0基础方法类(csdn)————程序.pdf

    本文主要介绍了如何在Android环境中实现热补丁修复,特别是针对基础方法类的修复。 首先,我们来看一个简单的例子,涉及两个类`BugClass`和`LoadBugClass`。`BugClass`包含一个`bug()`方法,而`LoadBugClass`则在`...

    安卓高德地图开发(1)——地图显示

    通过这个过程,开发者能够成功地在Android应用中显示高德地图,并实现基础的地图操作。在后续的开发中,你可以进一步探索如何添加标记、路径规划、自定义信息窗口等功能,让地图应用更加丰富和实用。

    Grails基础教程.pdf

    - **探究作用域**:探讨不同作用域的使用场景和实现方式。 - **处理默认操作**:如何处理没有明确指定的操作请求。 - **重定向**:重定向用户到另一个页面或动作。 **7.2 Services:让事情整洁且可维护** - **实现...

    网易 · 郑文 网易 APM android 端 Hook方案探索 .pdf

    此外,还提到了私用API的hook,这通常是通过非公开的系统接口来实现应用内方法调用的监控,但可能会带来版本兼容性的问题。 在实现Hook技术时,通常会借助一些构建工具和库,比如文档中提到的Bytecode ...

    javaSE代码实例

    15.4.2 基于接口实现的匿名内部类 335 15.4.3 匿名内部类的初始化 337 15.4.4 匿名内部类作用的体现 337 15.5 理解内部类 339 15.6 内部接口 340 15.6.1 定义在类中的内部接口 340 15.6.2 定义在接口中...

    Android应用源码之使用Vitamio打造自己的万能播放器(1)——在线播放.zip

    Vitamio是一个强大的开源库,它为开发者提供了一个简单易用的接口来实现多媒体播放功能,包括在线播放和本地播放。本教程将引导你了解如何利用Vitamio库构建一个基本的在线视频播放器。 首先,我们需要在项目中引入...

    android 二维码扫描 支持横竖屏切换Demo

    ZXing的核心库`core`提供了条码解码能力,而`zxing-android-embedded`则为Android设备封装了相机扫描的接口,简化了在Android应用中集成扫码的功能。 为了实现横竖屏切换,我们需要关注Activity的生命周期管理和...

    基于red5的javaDemo JDK1.7

    【基于Red5的Java Demo——JDK1.7详解】 在深入探讨基于Red5的Java Demo之前,我们首先需要理解Red5和JDK1.7这两个核心概念。Red5是一款开源的流媒体服务器,它支持实时传输协议(RTMP)、RTMPT、RTMPE、RTMPF以及...

    Retrofit2简单例子

    Retrofit通过提供一个注解驱动的接口来定义网络服务,使得开发者能够以声明式的方式来处理网络请求,而无需关心底层的HTTP实现细节。这个简单例子将展示如何在Android应用中集成并使用Retrofit2进行GET和POST请求。 ...

    neo4j入门资料汇总

    其有两种运行方式,一种是服务的方式,对外提供 REST 接口;另外一种是嵌入式模式,数据以文件的形式存放在本地,可以直接对本地文件进行操作。 Neo4j 分三个版本:社区版(community)、高级版(advanced)和企业...

    Android 谷歌推荐的VR实现方式(分享)

    此外,你还可以通过实现`VrPanoramaEventListener`接口来监听VR视图的各种事件,例如点击事件和头部跟踪事件,以实现更丰富的交互功能。 总结,通过以上步骤,我们可以使用Google VR SDK创建一个简单的全景图片VR...

    android 扫码二维码

    当然,这只是基础实现,更高级的特性,如扫描动画、自定义扫描框样式、连续扫描等,需要进一步学习和实践。同时,也可以考虑使用第三方服务,如微信开放平台的SDK,它们提供了更完善的接口和更丰富的功能。

    Android组件间通信

    本篇将深入探讨Android组件间通信的概念、重要性以及一种常用第三方库——EventBus的实现方式。 首先,理解Android组件间通信的基础。Android应用的基本构造单元就是这四大组件,它们各自负责不同的任务:Activity...

    jdk7和8的安装包.zip

    接口默认方法允许在不破坏向后兼容性的情况下为接口添加默认实现,而Stream API则提供了处理集合的新方式,使代码更易读、更高效。 在安装JDK时,首先需要下载对应的安装文件,这里有两个Windows 64位的安装程序:`...

    AndroidUtilCode.zip

    3. 网络工具类:封装了网络请求接口,支持GET、POST等多种请求方式,同时处理了网络错误,简化了网络请求的编写。 4. 图片处理:集成了图片加载、裁剪、压缩等功能,如Glide、Picasso等库的封装,使得图片操作更为...

Global site tag (gtag.js) - Google Analytics