2016-10-05 1 views
0

私はこのようになりますクラスの構造を有する:Groovyで@Singletonを名前で探す方法はありますか?

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

コードサンプルでは、​​抽象基本クラスAを定義しましたが、他の2つのクラスのどちらもそれを拡張していません。 '@Override'とマークされたメソッドのどちらもオーバーライドしないので、コードをコンパイルできません。 –

+0

修正する必要があります。ありがとう。 – Andy

+0

継承は質問に関連していなかったので、私はそれを削除しました –

答えて

1

答えはちょうどClassLoaderを使用することです:

Class<A> myClass = this.class.classLoader.loadClass "AB" 
assert 2 == myClass.instance.number 

IDEがあるためClassgetInstance方法の不足のため、しかし、文句を言うでしょう。

関連する問題