jdk1.5以前的集合类中存在的问题
ArrayList collection=new ArrayList();
collection.add(1);
collection.add(1L);
collection.add("abc");
int i=(Integer)arrayList.get(1);//编译要强制类型转换且运行时出错!
jdk1.5的集合类希望你在定义集合时,明确表示你要向集合中装哪种类型的数据,无法加入指定类型以外的数据
ArrayList<Integer> collection2=new ArrayList<Integer>();
collection2.add(1);
/*collection2.add(1L);
collection2.add("abc");*/
int i2=collection2.get(0);//不需要再进行类型转换
泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉"类型"说明
/**
*@Package:laladin.learn
*@Project:javaLearn
*@Title:GenericTest.java
*@Description:TODO
*@author Topdog topdog@163.com
*@date 2011-7-10上午09:17:22
*@version v1.0
*/
package laladin.learn;
import java.util.ArrayList;
/**
* @ClassName:GenericTest
* @Description TODO
* @date 2011-7-10
*/
public class GenericTest {
/**
* @Title:main
* @Description:TODO
* @Param:@param args
* @Return:void
* @throws
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList collection1=new ArrayList();
collection1.add(1);
collection1.add(1L);
collection1.add("abc");
int i=(Integer)collection1.get(1);//编译要强制类型转换且运行时出错!
ArrayList<String> collection2=new ArrayList<String>();
//collection2.add(1);
//collection2.add(1L);
collection2.add("abc");
String element=collection2.get(1);//不需要再进行强制类型转换
}
}
集合被泛型限定为特定类型,集合中只能存储同一种对象。