我有一个如下所示的类结构:
abstract class A {
abstract int getNumber()
}
@Singleton
class AA extends A {
@Override
int getNumber() { return 1 }
}
@Singleton
class AB extends A {
@Override
int getNumber() { return 2 }
}
我想做这样的事情:
A myInstance = GroovyAwesomeness.getSingletonInstanceByName("AA")
但是没有这样的可怕性(我知道)。这种事情有可能吗?
答案 0 :(得分:1)
答案是使用ClassLoader
:
Class<A> myClass = this.class.classLoader.loadClass "AB"
assert 2 == myClass.instance.number
然而,由于getInstance
上缺少Class
方法,IDE会抱怨。