2
我有一些代碼使用反射來實例化Java或Scala類,允許用戶指定名稱: 假設下面的loadIt
是使用this approach定義的假設方法。如何使用反射實例化Scala對象
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)
有什麼辦法,我可以適當地實例化對象?