scala(包)对象被反编译为java – 包含“new();”的静态初始化器
发布时间:2020-12-16 10:00:31 所属栏目:安全 来源:网络整理
导读:我有以下 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
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- angularjs:从指令更??新$rootScope变量
- Unix/Linux编程实践教程–chmod在Centos7.3的实现
- scala – 为什么prism set函数不返回Option / Ma
- 应用LDIF时错误50(访问权限不足) – OpenLDAP
- Build Your Own Angularjs 读书笔记(AngularJS牛
- 如何将scala.xml.Elem转换为与javax.xml API兼容
- Angular 2 – ngFor管道后的索引
- Angular学习笔记之集成三方UI框架、控件
- shell学习之二十--函数及函数的作用
- bash“wc -l”命令输出在呼叫或通过tee时有所不同
热点阅读