Scala动态类管理

4
我想知道在Scala中是否可以实现以下需求(但我认为这个问题也适用于Java):
  • 动态创建Scala文件 (没问题)
  • 编译它 (我认为这不是一个真正的问题)
  • 动态加载/卸载新类
除了知道动态代码加载/重新加载是否可能(在Java中是可能的,所以我认为在Scala中也是可行的),我还想知道这对性能损耗的影响(我可能会有很多很多类,没有名称冲突,但真的很多很多!)。
谢谢!
P.S .:我知道关于Scala类加载的其他问题存在,但我无法找到关于性能的答案!

我不确定你期望什么样的答案。看起来你想知道这个的性能损耗吗?你可以直接从列表中推断出来:t_total = t_createSource + t_compile + t_loadClass。我猜那将是在REPL中执行某些操作的性能。 - 0__
请参考这个问题。Kevin Wright的答案包含了您需要进行性能测试所需的全部代码。 - 0__
2个回答

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

但是,根据你想要实现的目标,你可能会喜欢看看Scala宏。它们提供了与生成源代码并编译它相同的灵活性,但没有那种方法的许多缺点。ScalaMock的原始版本曾通过生成源代码来工作,但我正在转而使用宏代替


2

正如REPL所清楚展示的那样,所有这些都是在Scala中可行的。而且使用Scala 2.10甚至会相对容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接