隨着新Groovy的...最佳groovy關閉習語取代java內部類?
我試圖取代了事件偵聽器,過濾器等java的成語
在常規工作我的代碼如下:
def find() {
ODB odb = ODBFactory.open(files.nodupes); // data nucleus object database
Objects<Prospect> src = odb.getObjects(new QProspect());
src.each { println it };
odb.close();
}
class QProspect extends SimpleNativeQuery {
public boolean match(Prospect p) {
if (p.url) {
return p.url.endsWith(".biz");
}
return false;
}
}
現在,這遠離我在java中的習慣,Query接口的實現恰好在odb.getObjects()方法中完成。如果我在那裏編寫的「java」我可能會做一些像下面,但它不工作:
Objects<Prospect> src = odb.getObjects({
boolean match(p) {
if (p.url) {
return p.url.endsWith(".biz");
}
return false;
}
} as SimpleNativeQuery);
或者更好,我想它是這樣的:
Objects<Prospect> src = odb.getObjects(
{ it.url.endsWith(".biz") } as SimpleNativeQuery
);
然而,groovy是否會將「匹配」方法與外部腳本環境相關聯並使我失敗。
我發現groovy ...無論如何,所以我會堅持學習更多關於它。謝謝。
我應該問的是我們如何做groovy中的「匿名」類。這裏是java的成語:
void defReadAFile() {
File[] files = new File(".").listFiles(new FileFilter() {
public boolean accept(File file) {
return file.getPath().endsWith(".biz");
}
});
}
可以groovy簡潔,沒有額外的類聲明?
你是正確的,問題是微弱的。你提供的東西實際上是有用的,我將使用它,但是我應該問的是我們如何在groovy中做「匿名」類。這裏的java成語: void defReadAFile(){ File [] files = new File(「。」)。listFiles(new FileFilter(){ public boolean accept(File file){ return file.getPath()。 endsWith(「。biz」); } }); } 可以groovy簡潔,沒有額外的類聲明? – Florin 2009-04-17 13:34:22