Я думаю, что когда вы переходите от интерпретатора к работающему приложению, вы не уклоняетесь от использования отражения:
scala> var res = Array[AnyRef](null)
scala> i.bind("result", "Array[AnyRef]", res)
scala> i.interpret("result(0) = new Test")
scala> res
res11: Array[AnyRef] = Array(Test@2a871dcc)
Вы все еще можете взять объект класса и создать экземпляр себя:
scala> i.interpret("result(0) = classOf[Test]")
scala> res(0).asInstanceOf[Class[_]].getConstructors()(0).newInstance()
res24: Any = Test@28bc917c