我很清楚,泛型类型在编译时会从Java代码中删除。什么信息(属性?)1.5+ JVM是否用于实现getGenericType
等?
发布于 2009-06-02 05:16:38
它们存储在Signature
属性中;有关字段类型签名的格式,请参阅updated Java Virtual Machine Specification的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
属性指定常量池值#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 extends java.lang.Object
。类型本身(Map
)也扩展了类java.lang.Object
,并且没有接口。
https://stackoverflow.com/questions/937933
复制相似问题