Java 泛型高级编程 ? 类型占位符的使用

 
import java.util.*;
class Person
{
	private String name;
	private int age;
	public Person (String name,int age)
	{
		this.name=name;
		this.age=age;
	}
	public String getName()
	{
		return this.name;
	}
	public int getAge()
	{
		return this.age;
	}
	public String toString ()
	{
		return this.getName()+"..."+this.getAge();
	}
}
class Student extends Person
{
	public Student(String name,int age)
	{
		super(name,age);
	}
	public String getName()
	{
		return super.getName();
	}
}
public class Zhanweifu {
	public static void main(String args[])
	{
		ArrayList<Person> personlist =new ArrayList<Person>();
		ArrayList<Student>studentlist=new ArrayList<Student>();
		personlist.add(new Person ("boy",20));   studentlist.add(new Student("stu-boy",20));
		personlist.add(new Person ("girl",22));  studentlist.add(new Student("stu-girl",22));
		personlist.add(new Person("person",30)); studentlist.add(new Student("stu-person",30));
		personlist.add(new Student ("boy",20));
		//print(personlist);//print(studentlist);传studentlist 将会出现编译错误
		//sop(personlist);
		//show(personlist);
		//show(studentlist);
		display(personlist);
		display(studentlist);
	}
	public static void print(ArrayList<Person> list) //这是为ArrayList<Person> 量身定做打印,没有什么扩展性
	{
		for(Iterator<Person> it=list.iterator();it.hasNext();)
		{
			System.out.println(it.next());
		}
	}
	public static void sop(ArrayList<?> list)  //直接利用占位符对操作类型进行占位,对任意类型的ArrayList<> 都可以操作,原理和泛型方法差不多
	{
		for(Iterator<?>it=list.iterator();it.hasNext();)
		{
			System.out.println(it.next());
		}
	}
	public static void show(ArrayList<? extends Person> list)//通过占位符来限制参数的类型 ,extends Person 表示 参数只能是Person 或Person 类的子类
	{
		for(Iterator<? extends Person> it=list.iterator();it.hasNext();)
		{
			System.out.println(it.next());
		}
	}
	public static void display(ArrayList<? super Student> list)//通过占位符来限帛参数的类型,super Student 表示参数只能是Student,或Student类的父类
	{
		for(Iterator<? super Student> it=list.iterator();it.hasNext();)
		{
			System.out.println(it.next());
2011/10/27  20:57:44		}
	}
}


  
  
TreeSet(Collection<? extends E> c)           构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。
TreeSet(Comparator<? super E> comparator)           构造一个新的空 TreeSet,它根据指定比较器进行排序。
  表明在一个类体系里,排序可以共用基类的排序方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值