zl程序教程

您现在的位置是:首页 >  其它

当前栏目

JDK1.5之Generics

JDK1.5
2023-06-13 09:13:45 时间
Generics是JDK1.5一个最重要的特性,主要用来处理Collection。

  以下代码在JDK1.5调试通过。

  代码实例1:Demo.java

  packagemaoxiang.examples.jdk15.generics;
  importjava.util.ArrayList;
  importjava.util.Collection;
  importjava.util.HashMap;
  importjava.util.LinkedList;
  importjava.util.List;
  importjava.util.Map;

  /**
  *@author毛翔
  *
  *演示如何使用Generics特性。代码来自于Generics教程:
  *http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
  *
  *Generics类似于C++中的模板。
  *区别:
  *1.
  *2.
  */

  publicclassDemo{
  publicstaticvoidmain(String[]args){}

  /**
  *最简单的用法
  */

  publicvoidTest1(){

  //以前的用法
  //ListmyIntList=newLinkedList();//1
  //myIntList.add(newInteger(0));//2
  //Integerx=(Integer)myIntList.iterator().next();//3需要强制转换
  //1.5的用法
  ListmyIntList=newLinkedList();//1"
  myIntList.add(newInteger(0));//2"
  Integerx=myIntList.iterator().next();//3"
  }

  /**
  *匿名字符的用法
  */

  publicvoidTest2(){
  Listlist=newArrayList();
  //通过匿名字符打印一个集合

  Wildcards(list);
  Wildcards1();
  /*
  *如果Wildcards2定义为Wildcards2(Listshapes)
  *以下调用错误
  */
  Wildcards2(list);
  }

  publicvoidWildcards(Collection<?>c){
  //以前的用法
  //Iteratori=c.iterator();
  //for(intk=0;k<c.size();k++){
  //
  log(i.next());
  //}

  //1.5的用法
  //Collection>c表示
  for(Objecte:c){
  log(e);
  }
  }

  publicvoidWildcards1(){
  //Collection>c=newArrayList();
  //c.add(newObject());//compiletimeerror

  //以上为错误的用法,因为不能确定c的类型,不能使用add,但get可以。正确的用法如下:

  ArrayListc=newArrayList();
  c.add("test");
  List<?>list=c;
  log(c.get(0));
  }

  publicvoidWildcards2(List<?extendsShape>shapes){
  //Listshapes定义只能接受Listshapes,也不能接受List
  for(Shapes:shapes){
  s.draw();
  }

  //以下写法错误,因为为参数申明为extendsShpape,无法确定Rectangle为Shape子类,属于不安全调用
  //shapes.add(0,newRectangle());

  MapallDrivers=newHashMap();
  Census.addRegistry(allDrivers);
  //以下写法允许,因为drivers明确定义,
  Listdrivers=newArrayList();
  Census.add(drivers);
  }

  /**
  *GenericMethods的用法
  *
  */

  publicvoidTest3(){
  //适用于各种类型的函数
  Object[]oa=newObject[100];
  Collection