17

我正在寻找像 Javassist 这样的高级字节码操作工具,但它了解 Scala 的一些特性。较低级别的字节码操作工具应该是相对不可知的,但对于我的用例来说,Javassist 级别的东西要好得多。但是,该级别的工具需要了解源语言及其字节码映射。Scala 是否存在类似的东西?到目前为止,我已经能够将 Javassist 与 Scala 一起用于非常简单的事情,但在其他一些事情上我已经被 Scala/Java 的一些差异所困扰。

4

1 回答 1

1

我不认为这样的工具存在(还)。目前的情况是,您不能混合使用不同版本的 Scala 编译的编译单元,即使用 Scala 2.9 编译的类不会与使用 Scala 2.10 编译的类互操作。

当您使用 Scala 2.10 时,您可以使用Scala 反射Scala 宏来达到与字节码修改类似的目标。对我来说,这看起来是最面向未来的方式。

您的一个问题旨在添加序列版本 ID。Scala 宏绝对应该可以做到这一点。使用 Scala 宏,它甚至可以根据 API 更改管理外部数据库中的串行版本 ID。

于 2013-09-16T13:26:59.160 回答