gpt4 book ai didi

java - boolean containsAll(Collection c) vs boolean addAll(Collection c); 的设计决策在集合框架中

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:50 26 4
gpt4 key购买 nike

<分区>

为什么 boolean containsAll(Collection < ?> c);每种类型都允许集合框架的方法?。但是boolean addAll(Collection< ?extends E> c);允许? extends E。所以,我写了一个程序来澄清。这是我的程序

public class ContainAllTest {
// take ServiceDto
ArrayList<ServiceDto> resultList = new ArrayList<ServiceDto>();

void Test() {

ServiceDto serviceDto = new ServiceDto();
serviceDto.setName("test");
resultList.add(serviceDto);
// another arraylist that takes String
ArrayList<String> resultList1 = new ArrayList<String>();
resultList1.add("test");
// no error, goes for run time.Contain all checking is done for two generic type ServiceDto and String:
resultList.containsAll(resultList1);
// error shown at compile time,as addAll take ServiceDto as generic type but the generic type for resultList1 take String:
resultList.addAll(resultList1);
}

所以,我的问题是我什么时候可以利用 resultList.containsAll(resultList1);当通用类型不同时。在我的例子中是 String 和 ServiceDto。用 boolean containsAll(Collection< ?extends E> c 替换 boolean containsAll(Collection< ? > c) 有什么问题吗)

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com