Компилятор не пропускает такую форму объединения. Посмотрел в ответах - использует точно такое же объединение, но ничего не работает, возможно с новыми версиями что-то изменили. Подскажите, как можно исправить это.
public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs) {
Set<Object> result = new HashSet<>();
result.addAll(cats); //ругается
result.addAll(dogs); //ругается
return result;
}
Сама ошибка: java: no suitable method found for addAll(java.util.Set<com.javarush.task.task08.task0820.Solution.Cat>)
method java.util.Collection.addAll(java.util.Collection<? extends org.omg.CORBA.Object>) is not applicable
(argument mismatch; java.util.Set<com.javarush.task.task08.task0820.Solution.Cat> cannot be converted to java.util.Collection<? extends org.omg.CORBA.Object>)
method java.util.Set.addAll(java.util.Collection<? extends org.omg.CORBA.Object>) is not applicable
(argument mismatch; java.util.Set<com.javarush.task.task08.task0820.Solution.Cat> cannot be converted to java.util.Collection<? extends org.omg.CORBA.Object>)package com.javarush.task.task08.task0820;
import org.omg.CORBA.Object;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/*
Множество всех животных
*/
public class Solution {
public static void main(String[] args) {
Set<Cat> cats = createCats();
Set<Dog> dogs = createDogs();
Set<Object> pets = join(cats, dogs);
printPets(pets);
removeCats(pets, cats);
printPets(pets);
}
public static Set<Cat> createCats() {
Set<Cat> result = new HashSet<Cat>();
for (int i = 0; i < 4; i++) {
result.add(new Cat());
}
return result;
}
public static Set<Dog> createDogs() {
Set<Dog> result = new HashSet<Dog>();
for (int i = 0; i < 3; i++) {
result.add(new Dog());
}
return result;
}
public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs) {
Set<Object> result = new HashSet<>();
result.addAll((Collection<? extends Object>) cats);
result.addAll((Collection<? extends Object>) dogs);
return result;
}
public static void removeCats(Set<Object> pets, Set<Cat> cats) {
pets.removeAll(cats);
}
public static void printPets(Set<Object> pets) {
for(Object pet:pets)
{
System.out.println(pet);
}
}
public static class Dog {
}
public static class Cat {
}
}