在Groovy项目中,如何查找类路径中接口的所有实现?

10

我正在实现一个接口,现在想要获取类路径中所有的该接口的实现。这个是否可能?或者我应该做些什么别的?

1个回答

9
您可以使用Reflections库来完成这种操作,例如:要查找实现Iterator接口的org.codehaus.groovy中的所有类,您可以执行以下操作:
@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
}

这将输出:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接