Sie passieren das Typargument explizit newHashSet
:
Sets.<Object>newHashSet(child);
Wenn der Typ Argument nicht übergeben wird ausdrücklich die Art geschlossen wird, und in diesem Fall ist es zu dem falschen Typ abgeleitet, vermutlich String
.
Es scheint, dass Sie Guava's Sets verwenden. Die Methodensignatur ist die folgende:
public static <E> HashSet<E> newHashSet()
Wie Sie newHashSet()
nimmt einen Typparameter E
sehen können. Das Ergebnis ist HashSet<E>
. E
wird als String
gewertet, aber Sie haben die Methode angegeben, um Set<Object>
zurückzugeben. Die Lösung besteht darin, entweder dem Compiler zu helfen oder die Einschränkung im Rückgabetyp auf Set<? extends Object>
zu lockern.