您的位置:首页 > 职场人生

黑马程序员——泛型限定,上限,下限

2012-08-31 00:03 375 查看
                                          ----------------------    android培训    java培训  
期待与您交流!    ----------------------   
                 

package collection.fanxing;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
/**
* ? 通配符,也可以理解为占位符
* 泛型的限定:
* ? extends E :可以接受E类型或者E的子类型,上限
* ? super E   :可以接受E类型或者E的父类型,下限
* @author wjw
*
*/
public class FanXing_XianDing {
public static void main(String[] args) {
ArrayList<String> list =new ArrayList<String>();
list.add("fda");
list.add("reqw");
list.add("hfds");
ArrayList<Integer> inte=new ArrayList<Integer>();
inte.add(23);
inte.add(423);
inte.add(675);
//测试泛型
print(list);
print(inte);
System.out.println("-----------------------------------------");
//测试通配符
show(list);
show(inte);
System.out.println("-----------------------------------------");
ArrayList<Person_> ap=new ArrayList<Person_>();
ap.add(new Person_("abc1"));
ap.add(new Person_("abc2"));
ap.add(new Person_("abc3"));
//bianLi(ap);
ArrayList<Student_> app=new ArrayList<Student_>();
app.add(new Student_("stu1"));
app.add(new Student_("stu2"));
app.add(new Student_("stu3"));
bianLi(app);
System.out.println("-----------------以下是下限的测试----------------------------");
TreeSet<Student_> stu_ts=new TreeSet<Student_>(new Comp());
stu_ts.add(new Student_("stu1"));
stu_ts.add(new Student_("stu2"));
stu_ts.add(new Student_("stu3"));
stu_ts.add(new Student_("stu4"));
stu_ts.add(new Student_("stu5"));
Iterator<Student_> iter=stu_ts.iterator();
while(iter.hasNext()){
System.out.println(iter.next().getName());
}

TreeSet<Work> w_ts=new TreeSet<Work>(new Comp());
w_ts.add(new Work("work1"));
w_ts.add(new Work("work2"));
w_ts.add(new Work("work3"));
w_ts.add(new Work("work4"));
w_ts.add(new Work("work5"));
Iterator<Work> w_iter=w_ts.iterator();
while(w_iter.hasNext()){
System.out.println(w_iter.next().getName());
}
}
//遍历自定义对象集合,单独列出方法
//泛型限定,<? extends Person_>:这种格式,泛型限定在Person_类以及继承他的子类,其他类不可用
public static void bianLi(ArrayList<? extends Person_> list){
Iterator<? extends Person_> iter=list.iterator();
while(iter.hasNext()){
System.out.println(iter.next().getName());
}
}

//第一定义泛型方法
public static <T> void print(ArrayList<T> list){
Iterator<T> iter=list.iterator();
while(iter.hasNext()){
//T t=iter.next();//此可操作,注意啊啊
System.out.println(iter.next());
}
}
//第二:定义通配符,进行占位
public static void show(ArrayList<?> list){
Iterator<?> iter=list.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
}
}
class Comp implements Comparator<Person_>{//注意,这里就用了“  ? super E  ”
public int compare(Person_ p1,Person_ p2){
return p1.getName().compareTo(p2.getName());
}
}
class Person_{
private String name;
public Person_(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Student_ extends Person_{
public Student_(String name) {
super(name);
}
}
class Work extends Person_{
public Work(String name){
super(name);
}
}

                                          ----------------------    android培训    java培训  
期待与您交流!    ----------------------   
                         详细请查看      http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string list class 测试