我想知道在 Scala 中是否可以执行以下操作(但我认为这个问题也可以应用于 Java):
- 动态创建 Scala 文件(好的,这里没问题)
- 编译它(我认为这不是一个真正的问题)
- 动态加载/卸载新类
除了知道动态代码加载/重新加载是否可能(在 Java 中是可能的,所以我认为在 Scala 中也是可行的)我还想知道这对性能下降的影响(我可以有很多类,没有名字冲突,但真的很多!)。
蒂亚!
PS:我知道还有其他关于 Scala 中的类加载的问题,但我还没有找到关于性能的答案!
我想知道在 Scala 中是否可以执行以下操作(但我认为这个问题也可以应用于 Java):
除了知道动态代码加载/重新加载是否可能(在 Java 中是可能的,所以我认为在 Scala 中也是可行的)我还想知道这对性能下降的影响(我可以有很多类,没有名字冲突,但真的很多!)。
蒂亚!
PS:我知道还有其他关于 Scala 中的类加载的问题,但我还没有找到关于性能的答案!
是的,你想做的一切当然都是可能的。您可能想看看ScalaMock,它是动态创建 Scala 源代码的示例。在SBT这是从代码调用编译器的一个例子。然后有许多不同的系统可以动态加载类 - 查看loadLibrary的文档作为起点。
但是,根据您想要实现的目标,您可能希望改用 Scala 宏。它们提供了与生成源代码然后编译它相同的灵活性,但没有这种方法的许多缺点。ScalaMock 的原始版本过去是通过生成源代码来工作的,但我正在改用宏。
正如 REPL 清楚地证明的那样,这在 Scala 中都是可能的。使用 Scala 2.10 甚至会变得相对容易。