私はGuice依存関係注入でPlay 2.5を使用しています。私は今だけclassNameは設定で指定されたクラスをバインドできるようにする必要がありFQDN文字列を使用してGoogle Guiceとクラスをバインドする方法
bind(classOf[SomeClass]).to(classOf[DefaultClass])
:
通常のバインドは次のように動作します。
私のような何か試してみました:
val className = config.getString("someClass.className")
val x: Class[_] = Class.forName(className)
bind(classOf[SomeClass]).to(classOf[x])
をしかし、その後のタイプが間違っています。
SomeClass
は、誰もがGuiceのを経由して、それをバインドする方法についてのアイデアを持っていそうでなければ、私は
val className = config.getString("someClass.className")
val x = Class.forName(className).newInstance().asInstanceOf[SomeClass]
bind(classOf[SomeClass]).toInstance(x)
のようなものを使用しているだろう、注入される必要がある引数を持っているので、それは、Guiceのを介して行われる必要があります?
あなたはそれが正しいジェネリック型であることをキャストすることができませんか?私はScalaを知らないが、Javaクラス ' clazz =(Class )Class.forName(className);である。 bind(SomeClass.class).to(clazz); ' –