scala(包)对象被反编译为java – 包含“new();”的静态初始化器
发布时间:2020-12-16 10:00:32 所属栏目:安全 来源:网络整理
导读:我有以下 scala代码 package x.ypackage object config { type SomeType = AnotherType[YetAnotherOne]} 以下是JDGUI在Java中的用法 package x.y.config;import scala.reflect.ScalaSignature;@ScalaSignature(bytes=" 06 01...")public final class packa
我有以下
scala代码
package x.y package object config { type SomeType = AnotherType[YetAnotherOne] } 以下是JDGUI在Java中的用法 package x.y.config; import scala.reflect.ScalaSignature; @ScalaSignature(bytes=" 06 01...") public final class package {} 和… package x.y.config; public final class package$ { public static final MODULE$; static { new (); } private package$() { MODULE$= this; } } 我对类型定义的消失没有任何问题(我希望scalac能够消除它) 我确实想知道以下是什么: static { new (); } MODULE $得到解释here. 事实上,当我将Java代码剪切并粘贴到我的IDE中时,它无法编译.无类型公共静态最终MODULE $;也不是新的();做. 这只是一些反编译的错位吗?我错过了什么吗? 这里发生了什么? 编辑: 按要求: javap -c -l -private package$.class Compiled from "package.scala" public final class x.y.config.package${ public static final x.y.config.package$MODULE$; public static {}; Code: 0: new #2 // class x/y/config/package$ 3: invokespecial #12 // Method "<init>":()V 6: return private x.y.config.package$(); Code: 0: aload_0 1: invokespecial #13 // Method java/lang/Object."<init>":()V 4: aload_0 5: putstatic #15 // Field MODULE$:Lx/y/config/package$; 8: return LineNumberTable: line 9: 0 LocalVariableTable: Start Length Slot Name Signature 0 9 0 this Lx/y/config/package$; } 解决方法
我不是scala专家,但对我来说似乎很正常,因为“对象”定义了一个单例对象.见
http://docs.scala-lang.org/tutorials/tour/singleton-objects.html
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- bash – 将`split`实用程序的输出发送到stdout
- angular – NG2 Cli模块的发现和加载
- 写入stdin并从stdout读取(UNIX / LINUX / C Prog
- shell 函数使用方法
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和
- vim – 如何从一个C/C++功能移动到下一个(两个方
- shell – BASH:在文本中查找数字 – >变量
- -bash: ls: No such file or directory 产生的原
- twitter-bootstrap – 一个面板中的Twitter Boot
- typescript – 无法在RxJS subscribe()函数中获取
热点阅读