什么是 ScalaSignature?

2023-12-02

将 Scala 文件反编译为 Java 代码时,经常会遇到带有以下注释的类ScalaSignatures。这些似乎只有一个注释值,一个经过某种编码的字符串。为什么 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(使用前将#替换为@)

什么是 ScalaSignature? 的相关文章

随机推荐

  • Firebase 查询是否可扩展

    在我的应用程序中 要检查注册时是否使用了电子邮件 和用户名 我使用这样的查询 let emailRef Firebase url https photocliq5622144 firebaseio com users emailRef qu
  • SwiftUI:“onDrop”覆盖层在 LazyVGrid 中不会消失?

    我正在测试 Asperi 对单元格重新排序的出色答案 SwiftUI 使用 onDrag 和 onDrop 对单个 LazyGrid 中的项目重新排序 我遇到的问题是 当我简单地进入拖动模式然后放置到位时 覆盖层不会重置 请参见单元格 3
  • 在 Django 中使用 fullCalendar

    有点像这里发布的问题的后续 Django 通过自定义模板标签使用用户输入修改数据 但自从提出这个问题以来 我决定采取不同的方法 正如你所知 我是个新手 所以请放轻松 我希望 Django 应用程序中有一个每周日历 显示数据库中的班次 以下是
  • 如何防止 PowerShell 中的变量注入?

    Ansgar Wiechers 对最近 PowerShell 问题的评论再次触发了我 DO NOT use Invoke Expression关于一个安全问题 我已经在脑海中思考了很长时间并且需要问 强烈的声明 参考调用表达式被认为是有害的
  • 右上角菜单选项

    I am not able to set the background image for the title bar i can only set color let me know what i have to change in th
  • 使用 Knockout 'foreach' 循环多维数组

    我有一个多维关联数组 this items ko observableArray name name1 viewable true children name name1 1 viewable true children name name
  • 如何在活动之间传递双数组(布尔[][])?

    我看不到将双布尔数组传递给另一个活动 我使用 putExtra 当我检索它并将其投射到boolean 它指出它无法投射并崩溃 然而 Boolean 是有效的 我该如何通过boolean 活动之间 如果您绝对需要一个 boolean 并且不能
  • C 静态变量初始化

    我学了一些 C 语言并发现了静态变量的解释 他们展示了这段代码 include
  • div 内的图像水平居中

    我正在尝试使用向上 向下箭头将图像设置为 div 的水平中心 我在这里阅读了一些教程和问题 但以下方法不起作用 img display block margin auto 它是用 Bootstrap 制作的 因此将部分集成在下面的代码片段中
  • 如何在Spring Security中编写自定义过滤器?

    我希望每个请求接收一些信息 所以我认为不要为每个请求提供一个函数并分别从请求中获取这些信息 最好有一个过滤器 所以每个请求都会通过这个过滤器 我就会得到我想要的 问题是 如何编写自定义过滤器 假设它不像任何预定义的 spring secur
  • Oracle10g中如何按顺序连接多行

    如果我有这样的数据 GROUP SEQUENCE COMMAND ONE 3
  • Jenkins groovy pipeline - 需要执行 jar 文件的命令标准输出

    我正在使用 Jenkins v 1 647 和 Pipeline 插件 v 1 14 我的管道作业提取了一个运行我的编排的常规脚本 我的问题是我有一个可执行的 jar 它将执行一些 Scalr API 操作并返回一个新的服务器主机名 传入标
  • 如何在组合框中添加换行符/制表符[重复]

    这个问题在这里已经有答案了 我有一个CSV包含各种项目的文件 我将其中一些项目放入组合框中 如何在中添加换行符和 或制表符CSV文件 以便它将在组合框中显示为换行符 选项卡 我努力了 t and n但它只显示组合框中的内容 基地ComboB
  • 查找 pandas 数据框中特定部分字符串第一次出现的索引位置

    我正在处理 AFRINIC whois 数据 我正在尝试查找子字符串第一次出现的位置 在示例中 pandas 数据框 左侧有一列 数据 是索引 我试图找到子字符串 inetnum 所以我正在寻找的结果是 2750383 data 20 mn
  • jQuery - 使用 .mouseout 或更合适的方法关闭下拉菜单,提示?

    我有以下代码 option box option name click function this siblings collapsible toggle this toggleClass hided option box attribut
  • Android,如何通过广播接收器接收主页按钮点击?

    在我的应用程序中 当用户通过单击注销按钮或按主页按钮关闭应用程序退出应用程序时 我需要向服务器发送注销请求 按钮没有问题 结果符合我的预期 问题是如何获得主页按钮 根据我的研究 不可能使用onKeyDown int keyCode KeyE
  • C# EWS - 已发送电子邮件的标识 - InternetMessageId

    我正在开发一个门票系统 我需要将票证 邮件 发送到电子邮件地址列表 并通过电子邮件接收有关此电子邮件 票证的答复 是否可以从我发送的新票证 电子邮件中获取 InternetMessageId 谢谢你 确保在发送消息时使用SendAndSav
  • 使用python的urllib2和Beautifulsoup爬取维基百科时删除html标签

    我正在尝试抓取维基百科以获取一些用于文本挖掘的数据 我正在使用 python 的 urllib2 和 Beautifulsoup 我的问题是 有没有一种简单的方法可以从我阅读的文本中删除不必要的标签 例如链接 a 或 span 对于这种情况
  • bash -c 变量未分配

    我正在尝试执行以下命令 bash c var test echo var 并且只打印一个空行 如果我执行相同的命令而不bash c var test echo var test 分配给的值 var正在打印 有人可以解释为什么我不能在第一个示
  • 什么是 ScalaSignature?

    将 Scala 文件反编译为 Java 代码时 经常会遇到带有以下注释的类ScalaSignatures 这些似乎只有一个注释值 一个经过某种编码的字符串 为什么 Scala 编译器创建如此奇怪的构造 而不是使用自定义的Attribute是