java.lang.Object[] не может быть преобразован в java.lang.String[]

Я новичок в Java. У меня есть HashSet of String, и я пытаюсь преобразовать содержимое в String[]. Я следую решению здесь Преобразование из HashSet‹String› в String[] Но все же получил ошибка. Вот мой код:

Set set = new HashSet<String>();
// Add elements into set
// ...
String[] words = set.toArray(new String[set.size()]);

Я получил ошибку: «несовместимые типы: java.lang.Object [] не может быть преобразован в java.lang.String []»


person ZigZagZebra    schedule 17.01.2016    source источник
comment
Почему вы изначально не объявляете набор как набор строк?: Set<String> например, Set<String> set = new HashSet<>();   -  person Hovercraft Full Of Eels    schedule 17.01.2016
comment
@ZigZagZebra Не смешивайте необработанные типы и дженерики.   -  person Nayuki    schedule 17.01.2016


Ответы (1)


Используйте очевидное решение: просто сделайте его общим Set<String>.

Set<String> set = new HashSet<>();
person Community    schedule 17.01.2016
comment
можете ли вы сказать мне, почему приведение set.toArray() к (String []) неприемлемо? Я удалил свой, в котором говорилось, что он был отклонен - person JRowan; 17.01.2016
comment
@JRowan: OP уже использует дженерики, но не полностью, и если вы примените, вы потеряете основную причину использования дженериков - вы потеряете проверку типов во время компиляции. Поэтому, если вы уже используете дженерики, лучше использовать их правильно, а не приводить. - person Hovercraft Full Of Eels; 17.01.2016