canvas教程

【第九章.泛型(8)

字号+ 作者:H5之家 来源:H5之家 2017-08-16 15:00 我要评论( )

Java允许设定通配符的下限:? super Type,这个通配符表示它必须是Type本身,或是Type的父类,下面程序采用设定通配符下限方式改写了前面程序: 1 import java.util.List; 2 import java.util.ArrayList; 3 import

     Java允许设定通配符的下限:<? super Type>,这个通配符表示它必须是Type本身,或是Type的父类,下面程序采用设定通配符下限方式改写了前面程序:

1 import java.util.List; 2 import java.util.ArrayList; 3 import java.util.Collection; 4 5 public class MyUtils{ 6 //下面dest集合元素的类型必须与src集合元素的类型相同,或是其父类 7 public static <T> T copy(Collection<? super T> dest, Collection<T> src){ 8 T last = null; 9 for(T ele : src){ 10 last = ele; 11 dest.add(ele); 12 } 13 return last; 14 } 15 16 public static void main(String[] args){ 17 List<Number> ln = new ArrayList<>(); 18 List<Integer> li = new ArrayList<>(); 19 li.add(5); 20 //此处可准确地知道最后一个被复制的元素时Integer类型 21 //与src集合元素的类型相同 22 Integer last = copy(ln, li); 23 System.out.println(ln); 24 } 25 } View Code

    这样可以保证程序可以推断出最后一个被复制的元素类型是Integer,而不是Number类型。

  泛型方法与方法重载:

    因为泛型既允许设定通配符的上限,也允许设定通配符的下限,所以允许在一个类里包含如下两个方法定义:

public class MyUtils{ public static <T> void copy(Collection<T> dest, Collection<? extends T> src){ } public static <T> T copy(Collection<? super T> dest, Collection<T> src) { } }

    上面MyUtils类中包含两个copy()方法,但调用这个方法就会引起编译错误:

List<Number> ln = new ArrayList<>(); List<Integer> li = new ArrayList<>(); copy(ln, li);

    编译器无法确定这行代码想要调用哪个copy()方法。

泛型与数组:

  参考网址:

posted @
请注意,本站信息均收集自互联网,相关信息仅供参考,医疗等重要信息请以正规途径为最终意见,本站不承担任何责任!

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 使用jquery-qrcode生成二维码

    使用jquery-qrcode生成二维码

    2017-08-16 14:01

  • python学习笔记14--用Tkinter实现GUI编程

    python学习笔记14--用Tkinter实现GUI编程

    2017-08-15 17:00

  • Canvas名侦探柯南-canvas练习,canvas-canvas

    Canvas名侦探柯南-canvas练习,canvas-canvas

    2017-08-12 14:00

  • 读javascript高级程序设计04-canvas

    读javascript高级程序设计04-canvas

    2017-08-06 11:01

网友点评
i