黑马程序员——泛型的总结

----------------------<a href="http://edu.csdn.net/heima"target="blank">android培训</a>、<a href="http://edu.csdn.net/heima"target="blank">java培训</a>、期待与您交流! ----------------------

泛型的定义:

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。

泛型的好处:

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

泛型作用:

泛型是提供给java编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合会去除掉“类型”信息,使程序运行

 

效果和原始类型完全一样,由于编译器生成的字节码会去除掉泛型的类型信息,只要能跳过编译器就可以往某个泛型集合中加入其它类型的数据,例如,用反射得到集合,再

 

调用其add方法即可。

 

      ArrayList<Integer> arr = new ArrayList<Integer>();

 

      arr.add(2);

 

      arr.getClass().getMethod("add", Object.class).invoke(arr,"aine");

 

      System.out.println(arr);

 

      打印结果是:[2, aine]

 

参数化类型是不考虑继承的

 

      Vector<String> v = new Vector<Object>()  //错误

 

      Vector<Object> v = new Vector(String>()   //错误

 

       Vector v1 = new Vector<String>() //正确

 

       Vector<Object> v = v1    //正确

 

通配符

 

    使用?通配符可以引用其它各种参数化的类型,?通配符定义的变量主要用作引用,可以调用此参数化无关的方法,不能调用与参数化有关的方法。

 

    定义一个方法,此方法用于打印任意参数化类型的集合中的所有数据,如下:

 

   public static void print(Collection<?> coll){

 

    for(Object c:coll){

 

    System.out.println(c);

 

    }

 

    //coll.add("String");//错误,因为它不知道自己未来自己一定匹配的是String

 

    coll.size(); //正确,此方法与类型参数没关系

 

    coll = new HashSet<Date>(); //正确,通配符?指向Date 正确的

 

    }

 

通配符的扩展

 

    1,限定通配符的上边界:

 

      正确:Vector<? extends Number> x = new Vector<Integer>();

 

      错误:Vector<? extends Number> x = new Vector<String>();

 

   2,限定通配符的下边界:

 

      正确: Vector<? super Integer> x = new Vector<Number>();

 

      错误:Vector<? super Integer> x = new Vector<Byte>();

 

 

自定义泛型方法

 

    访问修饰符  [static] <泛型标识> 泛型标识方法名称([泛型标识  参数名称]){方法体};

 

如果类中的多个方法要使用泛型,则泛型就要使用类级别的(就是泛型定义在类上)

----------------------<a href="http://edu.csdn.net/heima"target="blank">android培训</a>、<a href="http://edu.csdn.net/heima"target="blank">java培训</a>、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值