Groovy: 把Map作为接口的实现来使用

Groovy: 把Map作为接口的实现来使用

在Groovy中要想实现一个接口,我们可以直接使用map,通过as关键字把它传递给一个方法。下面是一个简单的例子,我们通过map定义了一个java.io.FileFilter接口的实现。我们吧它传递给java.io.File.listFiles()方法。然后把所有扩展名是.css和.png的文件打印出来。

map = [
    // 实现FileFilter.accept(File)方法.
    accept: { file -> file.path ==~ /.*\.(css|png)$/ }
] as FileFilter
new File('c:/temp').listFiles(map).each {
    println it.path
}

 
如果接口里有一个以上的方法要实现,我们可以用上面的map的方式。如果只有一个方法要实现的话(就像上面的例子)我们也可以使用闭包。上面的例子可以写成这样(只要.jpg文件):

filter = { it.path ==~ /.*\.jpg$/ }
new File('c:/temp').listFiles(filter as FileFilter).each { file ->
    println file.path
}

 

 

http://mrhaki.blogspot.com/2009/08/groovy-goodness-use-map-as-interface.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值