5

在由 Scala 的这一位(版本 2.8.1 最终版本)产生的编译类上运行 javap -v 时:

类点(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 条目中看到过二进制垃圾。

我在 Mac 10.6 上使用 OpenJDK 7 构建,如果这会有所不同 - 我会在明天有其他操作系统可以使用时尝试复制,并会相应地更新。

4

1 回答 1

8

ScalaSignature 元素是存储 Scala 需要的额外类型信息的地方。它现在被存储(显然是编码的)注释中,以便反射工具可以使用它。

于 2011-04-07T21:06:09.310 回答