泛型Java语言研究.pdfVIP

  • 10
  • 0
  • 约6.32千字
  • 约 7页
  • 2017-05-03 发布于未知
  • 举报
;谰麓囊藤甄纛?手??泛型??语言研究??盒统绦蛏杓扑枷???狫??砑臃盒吞匦?舒国强吕国科中科院软件所先进技术联合实验室?本?北京大学计算机研究所?京????泛型程序设计思想最早来源于软件重用的追求。本世纪?年代末,????钤缣岢隽?可重用软件部件的概念【?:随着面向对象??技术的发展,面向对象程序设计技术和组件技术在各个领域得到广泛的应用。?技术通过封装、继承和多态体现了软件重用。?年代末,????提出了泛型设计思想【?浚?盒退枷肜丛从谝桓銎铀氐墓鄄欤核惴ㄏ喽杂谑?堇嘈偷?抽象性,即很多情况下算法的实现与其操作的数据类型无关,只和数据类型所具有的某些语义属性有关.泛型程序设计??????????基于这些无关性对软件组件空间进行正交与?体现重用的思想不同,?通过挖掘代码本身的抽象性来实现重用.??牡谝桓?实现??????????在研究和实践中都取得了成功。在??年被/?.?语言标准库当中?保?谛矶嘀髁髅嫦蚨韵蟪绦蛏杓朴镅灾校?捕继峁┝朔盒吞匦裕??鏏?中的?????、?中的多态函数???????????????虴???械牟问???型等等.面向对象技术和泛型技术的结合将是高效率软件开发的有效途径.??的类型系统与泛型特性近年来??已成为最受欢迎的面向对象程序设计语言之一,但是??语言对泛型特性基本没有提供支持。一般地,程序设计者没有办法在??语言中书写对数据类型抽象的类和方法,这使得大规模面向对象程序开发带来不便。???镅蕴峁┝怂?椒盒腿萜???????分解?家?:?摘要泛型思想???????骸綢?欠钍兰??甏???某绦蛏杓扑枷耄?渚?枋峭?过类型的泛化挖掘代码的抽象性,实现代码高技复用。??作为新一代主流面向对象程序设计语言,并末象其先荤??蚐????谎?С址盒吞匦裕?疚奶致哿耸迪址盒蚃??镅缘囊?义、逢径、困难,并毗一个泛型??扩展?为例深入讨论了实现泛型??语言的关键技术关键字??,泛型,?????.??数据类型?????? 一一————??河一—?一谰霜??瓣孽?悸丁觥鲆籭■??队镅灾卸詔????拇?砭褪粲谝炖喾??法的覆盖??????‘不支持协变.即派生类方法必须与父类方法具有完全相同的返回值;类,但是程序设计者仍需要记住容器中元素的类型.在取出元素时做显式类型转化?????????饧燃又亓松杓普叩母旱R灿跋炝顺绦虻闹葱兴俣龋??友现氐氖牵?纠丛诒嘁肫?可以检查出的错误被拖延至运行期异常。虽然??的发布者承诺在未来的版本中添加泛型特性,但是目前人们只能使用第三方的支持来实现??泛型程序设计。多年来许多研究致力于为??语言添加泛型特性,使它象它的先辈?瓾与?????谎?С址盒统绦蛏杓啤R话憷此担?桓雒嫦蚨韵笥镅允迪?泛型特性的方法和难度取决于该语言现有的类型系统的特性。首先我们对??的类型系统进行分析:??语言与其先辈??隨????相同,都不是完全静态类型安全???????????的.这表现在对虚函数和动态类型下溯?????的支持;由于采用句柄来表示对象,??支持子类替换??????????????醋永喽韵罂梢杂帽桓咐嗌?鞯谋淞勘?示??中这将引起???????;在对另一个重要的类型特性协变?????的支持上,??语言表现出多样性:??中的数组体现类型协变??鐂????荗????淖永?.而方此外在???子旬的处理上??叉允许派生类定义父类方法抛出异常的~个子集.使情形变的更加复杂。?????盒突?耐揪?基于以上??类型系统的特点,研究者提出了多种为??掭加泛型特性的途径:??.?烤蔡????????纯静态翻译是广泛被采用的一种实现方法。泛型??源程序经过特殊的编译器或语言处理器.被编译为普通的??字节码或普通的??程序。编译器将泛型特性??缋嘈筒?数?コ??⑻砑邮实钡睦嘈妥;缓透ㄖ?椒ā4烤蔡??氲奶氐闶欠盒屠嗟乃?惺道?急?翻译成同一个类,从而运行时刻对泛型特性一无所知。最典型的纯静态翻译系统?目??????热说膒?盈咀及其衍生物?????????????氩问??嘈秃头椒ǎ?嘁肫?将参数化类型实例全部翻译为用某一约束父类毋???问?睦嘈停?缓笤谛枰O滤莸氖焙?添加类型变换。纯静态翻译对??运行时刻特别是安全模型的影响较小;但由于丢失了动态类型信息,实现中有一定局限性,并且会带来一些类型相关的安全隐患【?俊???.?炖嗑蔡??搿辝??????异类翻译指泛型类的每一个实例被翻译为单独的类?O钟械母美喾?胂低秤蠺???提出的虚拟类型????????椒ê蚦???曲?热说腘???语言嗍。????镅允??语言的超集:它采用和?基本相同的翻译方法,不同的是为泛型类型的每个实例生成了特殊的接口以便在运行时刻提供类型信息;虚拟类型方法在类定义内部引入“????璦??语句,可以将某一个类定义为包含虚拟类型的虚类,然后使用真实类型实例化这

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档