如何在Groovy中按名称查找@Singleton?

时间:2016-10-05 17:53:08

标签: groovy

我有一个如下所示的类结构:

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")

但是没有这样的可怕性(我知道)。这种事情有可能吗?

1 个答案:

答案 0 :(得分:1)

答案是使用ClassLoader

Class<A> myClass = this.class.classLoader.loadClass "AB"
assert 2 == myClass.instance.number
然而,由于getInstance上缺少Class方法,IDE会抱怨。