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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |