2013-10-30 11 views

risposta

6

È possibile utilizzare il Reflections library per questo tipo di cose, vale a dire; per trovare tutte le classi di org.codehaus.groovy che implementano l'interfaccia Iterator, si può fare:

@Grab('org.slf4j:slf4j-api:1.7.5') 
@Grab('org.reflections:reflections:0.9.9-RC1') 
import org.reflections.* 

new Reflections('org.codehaus.groovy').getSubTypesOf(Iterator).each { 
    println it.name 
} 

che stampa:

org.codehaus.groovy.runtime.StringGroovyMethods$1 
org.codehaus.groovy.runtime.SwingGroovyMethods$7 
org.codehaus.groovy.util.ArrayIterator 
org.codehaus.groovy.runtime.metaclass.ConcurrentReaderHashMap$KeyIterator 
org.codehaus.groovy.control.CompilationUnit$9 
org.codehaus.groovy.runtime.SqlGroovyMethods$ResultSetMetaDataIterator 
org.codehaus.groovy.runtime.SwingGroovyMethods$1 
org.codehaus.groovy.util.ManagedLinkedList$Iter 
org.codehaus.groovy.runtime.SwingGroovyMethods$3 
org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$2 
org.codehaus.groovy.runtime.SwingGroovyMethods$6 
org.codehaus.groovy.ant.FileIterator 
org.codehaus.groovy.runtime.IOGroovyMethods$3 
org.codehaus.groovy.runtime.DefaultGroovyMethods$DropWhileIterator 
org.codehaus.groovy.runtime.DefaultGroovyMethods$TakeIterator 
org.codehaus.groovy.runtime.DefaultGroovyMethods$3 
org.codehaus.groovy.runtime.SwingGroovyMethods$5 
org.codehaus.groovy.runtime.SwingGroovyMethods$2 
org.codehaus.groovy.runtime.metaclass.ConcurrentReaderHashMap$HashIterator 
org.codehaus.groovy.runtime.metaclass.ConcurrentReaderHashMap$ValueIterator 
org.codehaus.groovy.runtime.XmlGroovyMethods$1 
org.codehaus.groovy.runtime.SwingGroovyMethods$4 
org.codehaus.groovy.runtime.IOGroovyMethods$2 
org.codehaus.groovy.runtime.ReverseListIterator 
org.codehaus.groovy.runtime.DefaultGroovyMethods$TakeWhileIterator 
Problemi correlati