WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院软件开发Java Classworking 工具箱: 分析泛型数据结构 阅读

Classworking 工具箱: 分析泛型数据结构

 2010-03-18 00:00:00 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鐏氱€氼剟姊洪崹顕呭剰闁逞屽墮缁夊綊寮婚妸褉鍋撻棃娑欏暈闁伙綀浜埀顒傛暬閸嬪﹪宕伴弽褏鏆﹂柨鐕傛嫹
核心提示:类处理工具实际上就是一个把其他程序当成数据的程序,通常会修改或重新塑造目标程序,Classworking 工具箱: 分析泛型数据结构,以满足某些目的,在把程序当成数据的时候,还要包含每个值的类型信息的表示,因为我想在这一期中演示泛型的解码,如果构建一个关于程序自身内部数据结构的模型,协助对修改进行指导

类处理工具实际上就是一个把其他程序当成数据的程序,通常会修改或重新塑造目标程序,以满足某些目的。在把程序当成数据的时候,如果构建一个关于程序自身内部数据结构的模型,协助对修改进行指导,那么通常是有用的。可以利用反射,在第一次把目标程序的类文件装入 JVM 之后,创建这种类型的模型。也可以用框架直接从类文件解码出数据结构信息,甚至从源代码进行解码。不论采用何种技术,目的都是得到应用程序使用的对象之间关系的尽可能全面的视图。

Java 5 程序中的泛型信息,提供了应用程序数据结构的详细地图。泛型之前的程序,只要运行到 Java 集合类或使用无类型引用的应用程序类时,数据结构的分析就走进了死胡同。如果没有某种形式的外部信息,就没有办法知道无类型引用链接到什么类型的对象。在使用泛型时,可以提供附加信息作为源代码的一部分,然后编译器会把附加的引用类型信息直接整合到二进制的类文件中。利用这种内嵌的泛型信息是建立对象之间关系的更丰富视图的关键所在。

在这个系列的前两篇文章(“反射泛型” 和 “泛型与 ASM”)中,我首先介绍了使用反射得到泛型信息的基础知识,然后对于使用 ASM 字节码框架处理类文件的原始泛型信息作了详细介绍。在这篇文章中,我把 ASM 技术用得更深入一点儿,在泛型类定义中使用类型替换来构建目标应用程序数据结构的增强视图。在进入分析类所使用的实际 ASM 代码之前,我先介绍表示和组织数据结构信息时一些比较简单的问题。

表示数据结构

在构建分析程序时的第一个问题是,定义目标程序使用的数据结构的表示形式。这必须不仅包含每个字段值的表示,还要包含每个值的类型信息的表示。因为我想在这一期中演示泛型的解码,所以类型信息需要包含泛型引用所使用的具体的参数类型。

1 2 3 4 5 6  下一页

Tags:Classworking 工具箱 分析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接