リフレクションを使用して Java または Scala クラスをインスタンス化し、ユーザーが名前を指定できるようにするコードがいくつかloadIt
あります。
def getInstance(name:String, jar:String) = {
val c:Class[_] = loadIt(name, jar) // load class from the jar
c.newInstance.asInstanceOf[AnyRef] // return new instance of the class
}
これname
は、Scala クラスの場合は正常に機能しますが、オブジェクトの場合は機能しません。オブジェクトを定義するとします。
object Foo
そしてそれを次のように呼び出します:
getInstance("Foo", "someJar.jar")
エラーが発生します:
java.lang.InstantiationException: Foo
at java.lang.Class.newInstance(Class.java:364)
オブジェクトを適切にインスタンス化する方法はありますか?