文档介绍:***(Generics),其实质是将原本确定不变的数据类型参数化,作为对原有Java类型体系的扩充,使用泛型可以提高Java应用程序的类型安全、可维护性和可靠性。涟琳守触卡悟毒壬选喝恤漆瘴侩***,将类型检查从运行时挪到编译时进行,这样类型错误可以在编译时暴露出来,而不是在运行时才发作,这非常有助于早期错误检查,提高程序的可靠性,同时还可以减少强制类型转换的编码量。,所有的元素均当作Object类型来处理,当从集合中取出元素时,必须进行强制类型转换。而使用泛型可以在创建集合时指定其允许保存的元素类型,然后由编译器负责添加元素的类型合法性检查,而从集合中取出元素时,也不需要强制类型转换了。某骚草词篓塌荚啪治线巧计紫俗腿编埠见磊樟迪喀锐汪佃恼句定佣秤钟踏java泛型Java核心技术【例题15-1】RDemo{ publicstaticvoidmain(String[]args){ Vector<String>vt=newVector<String>(); ("One"); ("Two"); //(newDate()); for(inti=0;i<();i++){ Stringstr=(i); (str); } }}【例题15-2】lassHashtableGRDemo{ publicstaticvoidmain(String[]args){ Hashtable<Integer,Person>ht=newHashtable<Integer,Person>(); (101,newPerson("张三",24)); (102,newPerson("李四",18)); //(103,newDate()); Personp=(101); (); }},也就是说,以前不采用泛型的应用程序仍然可以正确运行,只不过在编译时,会出现编译提示,此时可以采用注解来关闭编译提示或警告信息。样巨悯霍巴巍估岭镭柴息脯姬严线砖惶距踩型腮蔽靡僻雁结氏晚头缴搽陈java泛型Java核心技术【例题15-3】注解演示***@SuppressWarnings("unchecked")lassSuppressWarningsDemo{ publicstaticvoidmain(String[]args){ Vectorvt=newVector(); ("One"); ("Two"); (newDate()); for(inti=0;i<();i++){ Objectobj=(i); (obj); } }},称为类型参数。如例题15-1中的Vector<String>,同理,在类名的后面,也可以使用类型参数,指明该类是泛型类,即该类中也可以使用类型参数。度熬挽奏酥待缆彭眺秆颅损深若娃互裂燥有豁堑侵鹰悟扛挑唐眨桶述珐祝java泛型Java核心技术【例题15-3】lassGRPerson<T>{ Stringname; Tage; publicGRPerson(){ } publicGRPerson(Stringname,Tage){ =name; =age; }