Scala 签名是一个注释。它包含元信息。
- https://github.com/scala/scala/blob/v2.9.2/src/library/scala/reflect/ScalaSignature.java
然后提供解析器。但scala-library.jar
不包含解析器。看起来像是秘密 API。
- https://github.com/scala/scala/blob/v2.9.2/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSig.scala
但我知道一些使用 ScalaSignature 的库。
- https://github.com/lift/framework/blob/2.4-release/core/json/src/main/scala/net/liftweb/json/ScalaSig.scala
- https://github.com/msgpack/msgpack-scala/blob/version-0.6.6/src/main/scala/org/msgpack/scalautil/ScalaSigUtil.scala
- https://github.com/havocp/beaucatcher/blob/v0.5.0/caseclass/src/main/scala/org/beaucatcher/caseclass/ClassAnalysis.scala
顺便说一句,我找不到 ScalaSignature 的正式规范。
我担心 ScalaSignature 的规范可能会因 Scala 版本的变化而改变。
另外,我认为使用 ScalaSignature 还存在一些其他风险,因为规范不存在。
此外,Scala2.10将提供新的反射API。
我认为当 2.10 发布时,使用 ScalaSignature 的原因将会减少。
那么,应该使用 ScalaSignature 吗?
Scala 2.10 中的反射 API 提供了官方支持的 Java 反射 + Scala 签名的抽象。如果 ScalaSignature 格式发生变化,反射也会相应变化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)