Scala的object语法里的代码生成到哪里了?

刚收到一个问题,
[quote]之前一直认为scala的object 中执行语句相当于在java的static构造块中,今天看到:
[url]http://stackoverflow.com/questions/2347107/what-is-scala-equivalent-of-javas-static-block[/url]
请帮忙分析一下,放在scala object 中的执行语句,最终转换为java时是如何的?
比如
object A {
println("hello")
}

里面的 println("hello") 在java中是怎么表达的呢? [/quote]

有这么具体的代码例子的话,最简单的回答办法就是把Scala代码编译到Class文件然后再拿Java的反编译工具来打开 :lol:

我测试用的代码:
object X {
println("hello")
}

生成了两个类,X与X$。下面分别是它们反编译出来的样子:
import scala.reflect.ScalaSignature;

@ScalaSignature(bytes="\006\001m9Q!\001\002\t\006\025\t\021\001\027\006\002\007\0059A(Z7qift4\001\001\t\003\r\035i\021A\001\004\t\021\t!\t\021!E\003\023\t\t\001lE\002\b\025I\001\"a\003\t\016\0031Q!!\004\b\002\t1\fgn\032\006\002\037\005!!.\031<b\023\t\tBB\001\004PE*,7\r\036\t\003'Yi\021\001\006\006\002+\005)1oY1mC&\021q\003\006\002\f'\016\fG.Y(cU\026\034G\017C\003\032\017\021\005!$\001\004=S:LGO\020\013\002\013\001")
public final class X {
}

import scala.Predef$;
import scala.ScalaObject;

public final class X$
implements ScalaObject {
public static final X$ MODULE$;

static {
new X$();
}

private X$() {
MODULE$ = this;
Predef$.MODULE$.println("hello");
}
}


所以结果要说是在Java的static块里也不算很错… :arrow:
哦对了我这里用的是Scala 2.8 RC1。一直懒还没把工作机更新到2.8 final。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值