集合中的元素,可以是任意类型的对象(对象的引用)
如果把某个对象放入集合,则会忽略他的类型,而把它当做Object处理
泛型则是规定了某个集合只可以存放特定类型的对象
并且会在编译期间对进行类型检查
创建一个测试泛型类TestGeneric
public class TestGeneric {
//声明带有泛型的List属性
public List<Course> courses;
public TestGeneric(){
//实例化courses
this.courses = new ArrayList<Course>();
}
在TestGeneric中构造测试增加方法 testAdd()
public void testAdd(){
Course cr1 = new Course("1","大学语文");
courses.add(cr1);
//泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错。
//courses.add("能否添加一些奇怪的东西呢?!");
Course cr2 = new Course("2","java基础");
courses.add(cr2);
}
在TestGeneric中构造循环遍历的方法 testForEach()
public void testForEach(){
for (Course cr: courses){
System.out.println(cr.cid+":"+cr.cname);
}
}
泛型结合可以添加泛型的子类型的对象实例
public void testChild(){
ChileCourse ccr = new ChileCourse();
ccr.cid = "3";
ccr.cname="我是子类型的课程对象实例";
courses.add(ccr);
}
泛型集合中的限定类型不能使用基本数据类型。
可以通过使用包装类鉴定允许存入的基本数据类型。
public void testBasicType(){
List<Integer> list = new ArrayList<Integer>();
list.add(1);
System.out.println("基本类型必须使用包装类作为泛型"+list.get(0));
}
测试类主方法
public static void main(String[] args){
TestGeneric tg = new TestGeneric();
//添加元素
tg.testAdd();
//foreach遍历
tg.testForEach();
//泛型子类型
tg.testChild();
tg.testForEach();
//泛型可以使用基本类型的包装类
tg.testBasicType();
}
新建Couse的继承类ChileCouse
public class ChileCourse extends Course {
}