所以问题是,是否可以在运行时将Scala对象对象导入为通常的scala类,例如:
trait A
class B extends A
Class.forName("B").newInstance().asInstanceOf[A]
但如果class B
变为object B
,则无效。
Scala对象还有其他选项吗?
答案 0 :(得分:-2)
如果B
是对象,则以下代码有效:
trait A
object B extends A
val `class` = Class.forName("B$")
val constructor = `class`.getDeclaredConstructors.apply(0)
constructor.setAccessible(true)
constructor.newInstance().asInstanceOf[A]