我想知道Scala中是否可以使用以下内容(但我认为这个问题也适用于Java):
除了知道动态代码加载/重新加载是否可行之外(在Java中这是可能的,所以我认为它在Scala中也是可行的)我还想知道这在性能下降方面的含义(我可以有很多类,没有名字冲突,但真的很多!)。
TIA!
P.S。:我知道有关Scala中类加载的其他问题,但是我还没有找到关于性能的答案!
答案 0 :(得分:2)
是的,你想做的一切当然是可能的。您可能希望查看ScalaMock,这是动态创建Scala源代码的示例。在SBT,这是从代码调用编译器的一个例子。然后有许多不同的系统可以动态加载类 - 以loadLibrary的文档为出发点。
但是,根据您想要实现的目标,您可能希望查看Scala Macros。它们提供了与生成源代码然后编译它所获得的相同的灵活性,但没有该方法的许多缺点。 ScalaMock的原始版本过去通过生成源代码来工作,但是I'm in the process of moving to using macros instead。
答案 1 :(得分:2)
在Scala中可以实现,REPL清楚地证明了这一点。使用Scala 2.10甚至可以相对简单。