You can use the Reflection Library for this kind of thing, i.e. to find all classes in org.codehaus.groovy that implement the Iterator interface, you can do:
@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 }
What prints:
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
tim_yates
source share