当在编译后的类上运行javap ( 2.8.1版最终版)时,这个类是由这段Scala (2.8.1最终版)生成的:
类点(x: Int,y: Int)
我得到了常量池条目的以下输出,以及指示不可打印字符的几个终端蜂鸣声?
#19 = Utf8 Lscala/reflect/ScalaSignature;
#20 = Utf8 bytes
#21 = Utf8 \t2\"\t!!>Lg9A(Z7qift4A\nqCA\r!BA
aM\4
-\tAA[1wC&Q\nTWm;=R\"\t
E\tQa]2bYL!a\tMr\1PE*,7\r\t+\t)A-\t/%:$
eDu\taP5oSRtDc!CAqA!)Qca-!)!da-
#22 = Utf8 RuntimeVisibleAnnotations
#23 = Utf8 Point
#24 = Class #23 // Point知道是怎么回事吗?为什么?我以前从未在CONSTANT_Utf8条目中看到过二进制垃圾。
我使用的是Mac10.6上的OpenJDK 7版本,如果这有什么不同的话--当我明天有其他OSes可以玩的时候,我会尝试复制,并会进行相应的更新。
发布于 2011-04-08 05:06:09
ScalaSignature元素是Scala需要的额外类型信息的存储位置。它现在被存储(显然是编码)在注释中,这样它就可以被反射工具使用了。
https://stackoverflow.com/questions/5587460
复制相似问题