boolean が含まれる理由 (Collection < ?> c); コレクションフレームワークのメソッドはすべてのタイプに許可されていますか? .But boolean addAll(Collection< ?extends E> c); 許可しますか?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< ? > c)をbooleanのcontainsAll(Collection< ?extends E> c)に置き換えると何か問題がありましたか ?