Несовместимый тип возврата в Java

У меня есть следующий метод: (с этого URL WSDL: http://services.aonaware.com/DictService/DictService.asmx?WSDL)

private static WordDefinition define(java.lang.String word) {
    com.aonaware.services.webservices.DictService service = new com.aonaware.services.webservices.DictService();
    com.aonaware.services.webservices.DictServiceSoap port = service.getDictServiceSoap();

    return port.define(word);
}

Он берет слово из jTextField и возвращает список его определений.

Я объявил следующий список:

List<WordDefinition> def = new ArrayList<WordDefinition>();

Я хочу напечатать результат, полученный из метода. Итак, я сделал следующий цикл:

    for (int i=0; i< def.size(); i++){
        System.out.println(Arrays.deepToString(def));
    }

где:

    String str = jTextField1.getText();
    def = define(str);

Ошибка заключается в следующем:

Несовместимые типы: список не может быть преобразован в Object[]

Любая помощь будет принята с благодарностью.

2 ответа

Вам нужно преобразовать список в массив, чтобы Arrays.deepToString() принял его: Arrays.deepToString(def.toArray())

Я вижу много путаницы.

Прежде всего, статический метод define возвращает вам WordDefinitionне List<WordDefinition>так линия

def = define(str)

должен дать вам ошибку компиляции.

Во всяком случае, если предположить, List<WordDefinition> def на самом деле переменная у вас с контентом, либо вы используете Arrays.deepToString ИЛИ вы перебираете список, а не оба.

Если вы хотите повторить, вы можете просто сделать:

for(WordDefinition wd: def){
    System.out.println(wd);
}

или же

Arrays.deepToString(def.toArray());
Другие вопросы по тегам