我现在正在使用 ASM(Java 字节码检测库)。要检索给定方法的签名,有一个名为“desc”的字段。我猜这是“descriptor”的缩写,但为什么不命名为“signature”呢? “描述符”和“签名”有区别吗?
最佳答案
在 asm 上下文中,您关心内部名称、方法描述符、类型描述符和签名。节号来自 asm doc .
2.1.2 内部名称
“类的内部名称就是 此类的完全限定名称,其中点替换为斜杠。”
com/snark/Boojum
2.1.3 类型描述符
[[Ljava/lang/Object;
2.1.4 方法描述符
方法描述符是描述参数的类型描述符列表 类型和方法的返回类型,在单个字符串中。
int[] m(int i, String s) becomes (ILjava/lang/String;)[I
4.1。泛型(用于签名)
“出于向后兼容的原因,关于泛型类型的信息不 存储在类型或方法描述符中(在引入之前很久就定义了 Java 5 中的泛型),但在称为类型、方法的类似构造中 和类签名。”
这个 Java:
List<List<String>[]>
成为这个签名:
Ljava/util/List<[Ljava/util/List<Ljava/lang/String;>;>;
关于java - "descriptor"和 "signature"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7526483/