package cn.generic;
import java.util.ArrayList;
import java.util.Iterator;
/**
*
* 泛型限定的第一种体现
* @author Administrator
*
*/
public class GenericDemo_3 {
public static void main(String[] args) {
//创建集合对象,并确定了泛型类型,左右类型要一致,否则会报错
ArrayList<Student> al = new ArrayList<Student>();
//向集合中添加元素
al.add(new Student("李红",16));
al.add(new Student("霓裳",18));
//创建集合对象,并确定了泛型类型
ArrayList<Teacher> al1 = new ArrayList<Teacher>();
//向集合中添加元素
al1.add(new Teacher("李虹霞",38));
al1.add(new Teacher("李伯河",36));
//调用方法打印限定的类型元素
printCollection(al);
printCollection(al1);
}
/**
* 调用迭代器,打印集合中的元素
* @param al
*/
private static void printCollection(ArrayList<? extends Person> al) {//泛型限定的一种体现
//遍历集合,获取所有元素
Iterator<? extends Person> it = al.iterator();
while(it.hasNext()){
Person p = it.next();
System.out.println("姓名:"+p.getName()+" 年龄:"+p.getAge());
}
}
}
/**
* 创建一个Person类(父类)
* @author Administrator
*
*/
class Person{
//私有成员变量
private String name;
private int age;
//构造方法初始化对象
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
//set get 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
/**
* 创建学生类(子类)
* @author Administrator
*
*/
class Student extends Person{
//构造函数初始化对象
public Student(String name, int age) {
super(name, age);
}
}
/**
* 创建一个老师类(子类)
* @author Administrator
*
*/
class Teacher extends Person{
//构造函数初始化对象
public Teacher(String name, int age) {
super(name, age);
}
}
|
|