加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 这两个通配符之间的区别

发布时间:2020-12-15 04:07:25 所属栏目:Java 来源:网络整理
导读:是以下方法声明, public void testMethod(ArrayListT extends Animal list) 和 public T extends Animal void testMethod(ArrayListT list) 相同? 解决方法 不同之处在于前者不编译,后者则编译.这是你问的问题吗? 如果你的意思是: public void testMethod
是以下方法声明,

public void testMethod(ArrayList<T extends Animal> list)

public <T extends Animal> void testMethod(ArrayList<T> list)

相同?

解决方法

不同之处在于前者不编译,后者则编译.这是你问的问题吗?

如果你的意思是:

public void testMethod (ArrayList <? extends Animal> list)

public <T extends Animal> void testMethod (ArrayList <T> list)

那么不同的是,在第一种情况下,你不能引用ArrayList元素的实际类型,而在第二种情况下你可以.

如果我们考虑以下两种情况,可能会有更明显的区别:

public void testMethod (
    ArrayList <? extends Animal> l1,ArrayList <? extends Animal> l2)

public <T extends Animal> void testMethod (
    ArrayList <T> l1,ArrayList <T> l2)

在第一种情况下,第一个参数是某种类型的ArrayList,它扩展了Animal,第二个参数是一个Arraylist或一些(可能是其他)类型,它扩展了Animal.

在第二种情况下,两个参数都是扩展Animal的相同类型的ArralLists.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读