黑马程序员——泛型限定,上限,下限
2012-08-31 00:03
375 查看
---------------------- android培训 java培训
期待与您交流! ----------------------
---------------------- android培训 java培训
期待与您交流! ----------------------
详细请查看 http://edu.csdn.net/heima
期待与您交流! ----------------------
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
相关文章推荐
- 集合框架---泛型限定(上限和下限)
- 黑马程序员_泛型的上限与下限
- 牛客网Java刷题知识点之泛型概念的提出、什么是泛型、泛型在集合中的应用、泛型类、泛型方法、泛型接口、泛型限定上限、泛型限定下限、 什么时候使用上限?泛型限定通配符的体现
- 黑马程序员-泛型的上限与下限
- 【泛型】泛型限定 ?(上限和下限案例)
- 泛型 定义在类上 、方法上、静态方法上 <?> 泛型限定 上限限定 下限限定
- Java 泛型通配符上限和通配符下限
- 泛型-通配符,受限泛型(上限和下限)
- 泛型的上限和下限
- 黑马程序员——泛型限定
- (黑马程序员)泛型限定原理和使用(一)
- 黑马程序员——泛型、泛型限定
- 黑马程序员_日记55_TreeSet、泛型限定和比较器限定方式的综合运用方式
- (黑马程序员)泛型的限定原理和使用(二)
- 泛型的通配符,上限,下限以及泛型嵌套
- 泛型的介绍,内部原理,更深应用,泛型中的?通配符,上限,下限
- java中泛型上限,下限应用
- [疯狂Java]泛型:类型参数多态问题、类型通配符(?)、类型通配符的上下限、类型参数的上限(类、接口)
- 黑马程序员--集合框架---泛型限定
- 18-泛型-07-常用对象API(集合框架-泛型-泛型限定(上限))