private Set<String> fields = new HashSet<>(); public void fields(String... s){ this.fields.addAll(s); }
Не компилируется, говоря, что:
addAll (java.util.Collection<? extends java.lang.String>) in Set cannot be applied to (java.lang.String[])
Есть ли хороший способ обойти это?
Если вы можете использовать Google Guava, следующий код может помочь вам
public void fields(String... s) { this.fields.addAll(Sets.newHashSet(s)); }
другой метод:
public void fields1(String... s) { Sets.union(fields,Sets.newHashSet(s)).copyInto(fields); }
Я думаю, вы можете сначала преобразовать свой массив в список.Может быть, что-то вроде
this.fields.addAll(Arrays.asList(s));
Вы просто конвертируете array в Set, как показано ниже.
array
Set
String [] array = new String[] {"one","two","three","four","five"}; Set<String> set = new HashSet<String>(Arrays.asList(array));
Если вы больше не хотите изменять Set, вы можете использовать Set.of с Java-9 + как:
Set.of
public void fields(String... s) { this.fields = Set.of(s); }
или вы можете использоватьCollections.addAll как в:
Collections.addAll
public void fields(String... s) { Collections.addAll(fields, s); }