2013-07-08 23 views
17

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

+0

你想要做哪些任务? – Antimony

+0

我遇到的一个问题是[这里]描述(http://stackoverflow.com/questions/17385725/how-to-add-a-serialversionuid-to-a-class-instance-in-scala)和[这里] (http://stackoverflow.com/questions/17384913/can-scala-2-10-reflection-emulate-this-javassist-functionality) –

回答

1

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

当您使用Scala 2.10时,您可以使用Scala reflectionScala macros达到与字节码修改相似的目标。对我而言,这看起来像是未来最好的证明方式。

其中一个问题旨在添加序列版本ID。这应该可以用Scala宏来实现。使用Scala宏,甚至可以根据API更改管理外部数据库中的串行版本id。

相关问题