关于泛型和迭代器

    技术2026-09-01  2

      在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。   泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

     

    package fanxing;

    public class Gen<T> {      private T ob;     public Gen(T ob){      this.ob=ob;     } public T getOb() {  return ob; } public void setOb(T ob) {  this.ob = ob; } public void showType(){  System.out.println("T的实际类型是:"+ob.getClass().getName()); }     }

     

    package fanxing;

    public class GenDemo {

     /**  * @param args  */ public static void main(String[] args) {  // TODO Auto-generated method stub        Gen<Integer> intob=new Gen<Integer>(88);        intob.showType();        int i=intob.getOb();        System.out.println("value:"+i);        System.out.println("---------------");                Gen<String> strob=new Gen<String>("hello Gen");        strob.showType();        String str=strob.getOb();        System.out.println("value:"+str);        System.out.println("---------------"); }

    }运行结果:

    T的实际类型是:java.lang.Integervalue:88---------------T的实际类型是:java.lang.Stringvalue:hello Gen---------------

     

     

    不使用泛型:

     

    package fanxing;

    public class Gen2 {  private Object ob; public Gen2(Object ob){  this.ob=ob; } public Object getOb() {  return ob; } public void setOb(Object ob) {  this.ob = ob; }    public void showType(){     System.out.println("T的实际类型是"+ob.getClass().getName());    }}

     

    package fanxing;

    public class GenDemo2 {

     /**  * @param args  */ public static void main(String[] args) {  // TODO Auto-generated method stub       Gen2 intob=new Gen2(new Integer(88));       intob.showType();       int i=(Integer)intob.getOb();       System.out.println("value:"+i);       System.out.println("---------------");              Gen2 strob=new Gen2(new String("hello Gen2"));       strob.showType();       String str=(String)strob.getOb();       System.out.println("value:"+str);       System.out.println("---------------"); }

    }

     

    运行结果为:

    T的实际类型是java.lang.Integervalue:88---------------T的实际类型是java.lang.Stringvalue:hello Gen2---------------

     

    迭代器:

    Iterator迭代器是一个对象,它的工作是遍历并选择序列中的对象,客户端程序列不关心序列底层的结构。迭代器通常被称为"轻量级"对象;创建它的代价很小。迭代器和泛型配合使用恩能起到很好的作用

    最新回复(0)