泛型你必须知道的知识
发布时间:2021-04-06 15:08:27 所属栏目:外闻 来源:互联网
导读:源码中,ArrayList 中的E称为类型参数变量,而整个ArrayList 我们称为泛型类型。 我们可以指定除基本类型之外的任何类型,如:ArrayList 。 源码中Collection中? 通配符类型表示类型的上界,表示参数化类型的可能是T 或是 T的子类。 源码中Comparator表示类
二 extends和super通配符
在定义泛型类型Generic testExtend方法中,因为泛型中用的是extends,在向list中存放元素的时候,我们并不能确定List中的元素的具体类型,即可能是Apple也可能是Orange。因此调用add方法时,不论传入new Apple()还是new Orange(),都会出现编译错误。 理解了extends之后,再看super就很容易理解了,即我们不能确定testSuper方法的参数中的泛型是Fruit的哪个父类,因此在调用get方法时只能返回Object类型。结合extends可见,在获取泛型元素时,使用extends获取到的是泛型中的上边界的类型(本例子中为Fruit),范围更小。 总结:
有了上面的结论我们看下Java标准库的Collections类定义的copy()方法,这个copy()方法的定义就完美地展示了extends和super的意图:
(编辑:甘孜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



