4

我想知道在 Scala 中是否可以执行以下操作(但我认为这个问题也可以应用于 Java):

  • 动态创建 Scala 文件(好的,这里没问题)
  • 编译它(我认为这不是一个真正的问题)
  • 动态加载/卸载新类

除了知道动态代码加载/重新加载是否可能(在 Java 中是可能的,所以我认为在 Scala 中也是可行的)我还想知道这对性能下降的影响(我可以有很多类,没有名字冲突,但真的很多!)。

蒂亚!

PS:我知道还有其他关于 Scala 中的类加载的问题,但我还没有找到关于性能的答案!

4

2 回答 2

2

是的,你想做的一切当然都是可能的。您可能想看看ScalaMock,它是动态创建 Scala 源代码的示例。在SBT这是从代码调用编译器的一个例子。然后有许多不同的系统可以动态加载类 - 查看loadLibrary的文档作为起点。

但是,根据您想要实现的目标,您可能希望改用 Scala 宏。它们提供了与生成源代码然后编译它相同的灵活性,但没有这种方法的许多缺点。ScalaMock 的原始版本过去是通过生成源代码来工作的,但我正在改用宏

于 2012-06-29T17:06:24.840 回答
2

正如 REPL 清楚地证明的那样,这在 Scala 中都是可能的。使用 Scala 2.10 甚至会变得相对容易。

于 2012-06-29T17:09:25.943 回答