2013-02-21 14 views
5

Groovy'ye aşık oldum ve daha fazla kullanmaya çalışıyorum. Şimdi Oracle Forms Jdapi kütüphanesi ile çalışmam gerekiyor. Bu kütüphane ile çalışırken, böyle bir sürü kod yazmak: Bir Java kütüphanesi yapmak "Groovy"

JdapiIterator progIterator = getWorkForm().getProgramUnits(); 
while(progIterator.hasNext()) { 
    ProgramUnit currProgUnit = (ProgramUnit) progIterator.next(); 
    ... 
} 

ve cource isterim

Ancak

getWorkForm().programUnits.each { 
    ... 
} 

yazmak için, ben varolan Java kütüphaneye bir Groovy arayüz yazdı asla ve biraz yardıma ihtiyacım var. Ben Groovy 2.0's extension methods hakkında biliyorum, ama bu durumda ben sadece tutmak istediğim fonksiyonlara delege farklı bir isim alanında aynı adı taşıyan bir sınıf hakkında düşünüyorum.

each işlevinin yanı sıra koleksiyonlar için geçerli olan tüm diğer kapatmaları sağlamanın en iyi yolu nedir? Beni doğru yöne yönlendirirseniz sevinirim!

+7

"getWorkForm(). ProgramUnits.each {ProgramUnit currProgUnit -> ...}' yazamaz mısınız? Hangi hatayı alıyorsun? –

+3

Evet, her zaman böyle bir şey yapıyorum. Yukarıdaki kod beklendiği gibi çalışmalıdır. Bazı yardımcı yöntemler eklemek istemediğiniz sürece bir arayüz sarıcı yazmaya gerek yoktur. –

+0

Çok teşekkürler, kabul edilen cevaba yorum yapın. – ChrLipp

cevap

6

Sağlamanız gereken tek yöntem, iterator() yöntemidir. Sonra tüm Groovy Nesne iterasyon yöntemlerini (each(), find(), any(), every(), collect(), ...) ücretsiz olarak edinin!

+0

Her birinin bir yineleyici üzerinde de olabileceğini düşündüm, yani: 0. ile {x -> ([hasNext: {x <10}, sonraki: {x ++}] yineleyici olarak) .each {println it}} ' –

+0

Bu özelliğin farkında değildim. Ben kazma sonra java.lang.Class uygulamasında (en azından Groovy JDK doku) bulundu. Çok daha fazla uygulamak zorunda olduğumu düşündüm! – ChrLipp