快速业务通道

Classworking工具箱: 分析泛型数据结构 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
ot;Lsun/")) {            refs.add(ftype);            dones.add(ftype);          }        }      }    }    public static void main(String[] args) {      BinaryClassLoader loader = new BinaryClassLoader();      loader.addPaths(System.getProperty("java.class.path"));      loader.addPaths(System.getProperty("sun.boot.class.path"));      TypeDirectory tdir = new TypeDirectory(loader);      TypeDescription desc =       tdir.getTypeInstance("Lcom/sosnoski/generics/PathDirectory;");      printDescription(desc);    } } com.sosnoski.generics.PathDirectory fields:   m_pathPairs of type   com.sosnoski.generics.PairCollection<java.lang.String,com.sosnoski.generics.DirInfo> com.sosnoski.generics.PairCollection<java.lang.String,com.sosnoski.generics.DirInfo>   fields:   m_tValues of type java.util.ArrayList<java.lang.String>   m_uValues of type java.util.ArrayList<com.sosnoski.generics.DirInfo> java.util.ArrayList<java.lang.String> fields:   serialVersionUID of type long   elementData of type java.lang.String[]   size of type int java.util.ArrayList<com.sosnoski.generics.DirInfo> fields:   serialVersionUID of type long   elementData of type com.sosnoski.generics.DirInfo[]   size of type int com.sosnoski.generics.DirInfo fields:   m_files of type java.util.List<com.sosnoski.generics.FileInfo>   m_directories of type java.util.List<com.sosnoski.generics.DirInfo>   m_lastModify of type java.util.Date java.util.Date fields:   gcal of type sun.util.calendar.BaseCalendar   jcal of type sun.util.calendar.BaseCalendar   fastTime of type long   cdate of type sun.util.calendar.BaseCalendar$Date   defaultCenturyStart of type int   serialVersionUID of type long   wtb of type java.lang.String[]   ttb of type int[]

在清单 6 底部的输出中(为了格式化稍微重新调整了结构),可以看到类型替换代码的作用。类型替 换的第一个实例在输出的第 4 和第 5 行,里面指定了 ArrayList 实例中值的类型。接下来的 ArrayList<String> 分析显示出它有一个 String[] 字段。这个输出也显示了数据结构分析的局限 性:一旦遇到 DirInfo 类中的 List 字段,就没法进一步分解了,因为 java.util.List 是接口而不是 实际的类 —— 而且只有接口的实现才有字段。当然,对本文提供的代码做些修改,也可以把同样的分析 像用于字段一样用于方法,而且这种分析方法也能包含接口。

泛型结束语

到现在,已经看到了如何用 ASM 框架实现泛型数据结构分析,还有一个快速的示例,表现了这类分析 的可能性和局限性。还有一些比较好的应用,通过在工具中整合泛型,在 Java 类之间和一些外部形式之 间进行转换,从而提供详细的数据视图。例如,我正计划在我的 JiBX 数据绑定框架的新版本绑定生成器 中,利用泛型提供的信息,在不需要用户的额外输入的情况下,填充结构的更多细节。

在三篇关于泛型的文章之后,我要换一个主题了!接下来的类处理工具包 系列中,我将介绍一个处理 Java 5 标注的工具。以前,我曾经介绍过在使用标注作为配

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号