java是一种在类文件中查找对其他类的引用的简单方法
如http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html所述的类文件格式包含对constant pool中其他类的所有引用,作为常量_Utf8类型的条目
但这些条目不仅是对类的引用,还包括类文本、方法名、字段等等
在第一次尝试中,我认为使用constant_Class、constant_NameAndType和constant_MethodType类型的其他constant_pool条目引用的constant pool条目就足够了
但这些似乎不包括类型参数和注释。进一步阅读规范似乎表明,我需要解析RuntimeVisibleAnnotations和类似的构造,以便识别相关的常量池条目。这意味着我必须或多或少地解析完整的类文件
但我自己解析类文件背后的整个想法是,它比使用ASM这样的库更简单,因为我认为它足以解释常量池
我的问题是:有没有一种方法可以可靠地识别类文件中引用的所有类,只需解释常量池就可以了
共 (0) 个答案