它们存储在
Signature属性中;请参阅更新的Java虚拟机规范的 4.8.8节,以及有关字段类型签名格式的4.4.4节。
这是一个使用示例
javap -verbose java.util.Map:
public interface java.util.Map SourceFile: "Map.java" Signature: length = 0x2 00 1E [other attributes omitted]
Signature此处的属性指定(如果您将其读为big-endian,就像JVM类文件格式中的所有整数一样)恒定池值#30(30 =
0x1E)。因此,让我们看一下:
const #30 = Asciz <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;;
请阅读4.4.4中指定的语法。因此,这使用了两个类型参数,
K extends java.lang.Object和
V extendsjava.lang.Object。类型本身(
Map)也扩展了class
java.lang.Object,并且没有接口。



