我有一个界面“ TestInterface ”并且grails服务“ TestService ”实现了“TestInterface”。但是当我测试我是否有一个实现这样的接口的服务时:
application.serviceClasses?.each { serviceClazz ->
if(serviceClazz instanceof TestInterface) {
println "service name => "+ serviceClazz.name;
}
}
结果是我没有得到任何错误或我的期望(服务名称=> TestService )
我也尝试在if条件下将serviceClazz更改为serviceClazz.class,serviceClazz.metaClass但仍无法正常工作。
谢谢,
答案 0 :(得分:2)
怎么样:
if (TestInterface.class.isAssignableFrom(serviceClazz)) {
...
}
所以我设法使用 Grails 2.3.11 运行实际示例。
class BootStrap {
def grailsApplication
def init = { servletContext ->
grailsApplication.serviceClasses.each { serviceClazz ->
if (TestInterface.isAssignableFrom(serviceClazz.clazz)) {
println serviceClazz
}
}
}
def destroy = {
}
}
如您所见,serviceClazz.clazz
中的重要部分是 clazz 。
希望这有帮助!