我正在寻找像Javassist这样的高级字节码操作工具,但是它可以理解Scala的一些特性。较低级别的字节码操作工具应该是相对不可知的,但对于我的用例,Javassist级别的东西要好得多。但是,该级别的工具需要了解源语言及其字节码映射。 Scala有这样的东西吗? 到目前为止,我已经能够将Javassist与Scala一起用于非常简单的事情,但是我已经被Scala / Java的一些差异所困扰了。
答案 0 :(得分:1)
我不认为这样的工具存在(尚未)。目前的情况是,你不能混合用不同版本的Scala编译的编译单元,即用Scala 2.9编译的类不能与用Scala 2.10编译的类互操作。
使用Scala 2.10时,您可以使用Scala reflection和Scala macros达到与字节码修改类似的目标。对我来说,这看起来是最具前瞻性的方式。
您的一个问题旨在添加序列版本ID。使用Scala宏绝对可以实现这一点。使用Scala宏,甚至可以根据API更改来管理外部数据库中的串行版本ID。