Java中不兼容的返回类型

时间:2016-11-12 16:20:39

标签: java web-services wsdl incompatibility

我有以下方法:(来自此WSDL URL: 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 个答案:

答案 0 :(得分:0)

您需要将列表转换为Arrays.deepToString()的数组以接受它:Arrays.deepToString(def.toArray())

答案 1 :(得分:0)

我看到很多困惑。

首先,静态方法define会返回WordDefinition,而不是List<WordDefinition>,所以行

def = define(str)

应该给你一个编译错误。

无论如何,假设List<WordDefinition> def实际上是您对内容的变量,要么使用Arrays.deepToString,要么迭代列表,而不是两者。

如果你想迭代,你可以这样做:

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

Arrays.deepToString(def.toArray());