我有一些代码使用反射来实例化 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
}
如果是 Scala 类,这很好name
用,但如果它是对象,则不行。假设我定义了一个对象:
object Foo
并将其称为:
getInstance("Foo", "someJar.jar")
我得到错误:
java.lang.InstantiationException: Foo
at java.lang.Class.newInstance(Class.java:364)
有什么方法可以正确实例化对象吗?