Java泛型的应用的研究.docVIP

  • 4
  • 0
  • 约6.47千字
  • 约 13页
  • 2018-10-11 发布于福建
  • 举报
Java泛型的应用的研究

Java泛型的应用的研究   摘要:分析非泛型的Java系统存在的数据类型转换安全问题,提出基于Java泛型的解决方案。通过对泛型的原理分析,探讨Java泛型的实际应用。并在此基础上,总结Java泛型的的特点。   关键词:泛型;对象包装;数据类型转换;集合   中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)22-690-03   Research on Java Generics   WU De-peng   (Department of Computer Science Information Engineering,Guangxi Technological College of Machinery and Electricity, Nanning 530007,China)   Abstract: This paper analyses security problem of the data type converting in non-generics Java system and put up the solution which bases on generics. Through the generics theory analysis, study practical application of generics in Java. On this basis, sum up the feature of generics in Java.   Key words: generics; Object packaging; data type converting; collection   1 引言   Java语言的泛型是JDK1.5(Java Development Kit,Java开发工具包)版本之后引入的新特性。在基于Java的系统开发中,经常需要频繁地对一些对象进行包装和取出。包装操作一般通过集合来操作,即将多个对象实例加入到集合对象中管理和传递,然后在适当的时机在将这些对象实例从集合中取出并还原成原来的数据类型。在JDK1.5以前的版本,在进行多个对象包装时,集合类一般都规定所其所容纳的对象为Object类型,即所有Java类的最高父类。从集合里取出对象时,再根据需要进行强制类型转换,从而还原成包装前的对象的数据类型。这样的操作过程存在有潜在的类型转换安全问题。假设系统开发人员从一个集合里取出对象的时候无法知道包装前对象的数据类型,会导致无法完成转换或者隐含有类型转换错误。针对这个问题,JDK1.5引入了泛型的概念,它能在创建一个Java集合时显式指定其所能容纳的数据类型,并在取出时明确告诉系统开发人员取出的对象是什么数据类型,这样避免了包装和取出的数据类型不一致,从而有效地避免代码中的潜在类型转换安全错误。   2 Java泛型的原理   2.1 非泛型的数据类型转换存在的问题   为了更深入理解Java泛型的概念,我们先来看一个没有引入泛型的例子:   package test.generics;   import Java.util.ArrayList;   public class TestApp1 {   public static void main(String[] args) {   ArrayList list=new ArrayList();   list.add(new Integer(1));   list.add(new Integer(2));   list.add(new Double(5.23));   for (int i=0;i<list.size();i++) {   Integer temp=(Integer) list.get(i);   System.out.println(Value());    }    }   }   本例中,建立了一个ArrayList的实例,并分别把整数1、2和浮点数5.23添加给它。然后循环遍历该ArrayList,从中取出整型值并打印到控制台上。这个程序编译的时候并没有错误,能被编译通过,但是运行的时候JDK却抛出了如下异常:   Exception in thread main   Java.lang.ClassCastException: Java.lang.Double   这是因为程序运行时,在循环里进行取出对象的时候,试图将Double类型转换成Integer类型,这显然是不合理的。   作为一个习惯于使用语言提供的类型安全的系统开发人员,希望这样的问题在编译期间就能被发现,而不是潜伏到运行的时刻才抛出错误,这正

文档评论(0)

1亿VIP精品文档

相关文档