将 Scala 文件反编译为 Java 代码时,经常会遇到带有以下注释的类ScalaSignature
s。这些似乎只有一个注释值,一个经过某种编码的字符串。为什么 Scala 编译器创建如此奇怪的构造,而不是使用自定义的Attribute
是在class
file?
From 在类文件中存储腌制的 Scala 签名:
这
遗产
存储签名的方法
作为属性
同时也更加优雅,
更紧凑(约 15%)且更简单
比使用注释。
然而,要访问
腌制签名
在属性中
需要
获取并解析
这
整个类文件。
由于注释可以被 JVM 识别,因此新方法允许检索
腌制的
签名
字节
直接从内部
正在运行的 Scala 程序
通过使用 Java 反射。
新方法
是
持续开发的一部分
A
好的
斯卡拉
反射
图书馆。
Java反射
意见
斯卡拉
程序在
一种以 Java 为中心的简化方式。给一个
以Scala为中心的反射程序视图,Java反射提供的信息必须
完成
与找到的信息
Scala 签名。
这
遗产
储存方法
会需要
全部
待解析的类文件
再次
—
JVM 已经解析它们了
并通过反思暴露其大部分内容。
新的存储
方法允许
访问
腌制的 Scala 签名
与其他反射信息相同的方式是
获得,使得新的Scala反射库更简单、更快。
虽然 Scala 反射库不会成为 2.8 版本的一部分,但它是
理想的
那
现存的
2.8 类文件与新的反射库兼容
可用的。
此外,由于 2.8 的类文件与 2.7 的类文件不兼容
任何状况之下,
改变
储存方法
签名
2.8 中
不会要求
其他
二进制不兼容
类文件格式
改变
不久之后。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)