我知道scala中的空参数和无参数方法之间的使用差异,我的问题与生成的类文件有关.当我在javap中查看这两个类时,它们看起来完全相同:
class Foo {
def bar() = 123;
}
class Foo {
def bar = 123;
}
Run Code Online (Sandbox Code Playgroud)
但是当我在scalap中查看它们时,它们会准确地反映参数列表.在类文件中scalac的位置是否已知这种区别?
Mat*_*ell 20
在.class文件中,有一个类文件属性ScalaSig,它包含Scala所需的所有额外信息.它不是人类真正可读的,但它存在:
$ javap -verbose Foo.class
const #195 = Asciz ScalaSig;
const #196 = Asciz Lscala/reflect/ScalaSignature;;
const #197 = Asciz bytes;
const #198 = Asciz ^F^A!3A!^A^B^A^S\t\tb)^[7f^Y^Vtw\r^^5DQ^V^\7.^Z:^K^E\r!^
Q^A^B4jY^VT!!^B^D^B^UM^\^W\r\1tifdWMC^A^H^....
Run Code Online (Sandbox Code Playgroud)
另请参见Scala签名是如何存储的?和scala.reflect.ScalaSignature,这不是很有趣:-)
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |