2013年5月19日

Scala中的语言特性是如何实现的(2)

摘要: 上篇博文的末尾留了三个问题,现在自问自答一下。在Scala中被声明为val的v4为什么在反编译的Java中不是final的呢?在方法中声明局部变量时,如果用Scala的val关键字(或者是Java中的final)来修饰变量,则代表着此变量在赋过初始值之后不可以再被重新赋值。这个val或者final只是给编译器用的,编译器如果发现你给此变量重新赋值会抛出错误。而bytecode不具备表达一个局部变量是immutable的能力,也就是说对于JVM来说,不存在不可变的局部变量这个概念。所以v4在反编译之后,就和普通的局部变量无异了。在Scala中被声明为val的v2为什么在反编译的C#中不是read 阅读全文

posted @ 2013-05-19 15:12 崔鹏飞 阅读(1099) 评论(8) 推荐(1) 编辑

导航