如何从Web Service的ArrayList结构中捕获返回的值

时间:2018-07-12 14:58:08

标签: java

我不是Java开发人员。只是一些基本知识和知识。 我正在尝试使用我创建并将其部署在localhost上的Web服务。 我创建了Web服务URL的代理,并创建了所有Java类。 现在,我制作了一个类,通过传入参数来捕获数据并在ArrayList中获取返回数据。

我的问题是,现在我传入了参数,并在Arraylist结构中返回了值

下面的代码

CustomerLedger val = s.getCustomerLedger();
System.out.println(val.getDocVoucherInvoiceE()+ val.getDocumentPay() + 
val.getAmount()); 

s.getCustomerLedger(); 

在设置CustomerLedger val = s.getCustomerLedger();时出现错误

这是错误

Type mismatch: cannot convert from List<CustomerLedger> to CustomerLedger

3 quick fixes available

Add cast to 'CustomerLedger'

Change type of 'val' to 'List<CustomerLedger>'

Change return type of 'getCustomerLedger(...)' to 'CustomerLedger'

我尝试的第一个选项是给我Class强制转换异常 第二种选择也没用。

任何对此的解决方案将非常有帮助。 我真的很感激。我已经坚持了一个星期。

我只需要知道应该怎么做才能使最后几行代码正常工作?

1 个答案:

答案 0 :(得分:0)

根据错误,该函数将返回列表而不是一个实例,因此您可以进行以下更改:

旧代码:

CustomerLedger val = s.getCustomerLedger();
    System.out.println(val.getDocVoucherInvoiceE()+ val.getDocumentPay() + 
    val.getAmount()); 

新代码:

List<CustomerLedger> customerLedgerList = s.getCustomerLedger();
CustomerLedger val = customerLedgerList.size()>0?customerLedgerList.get(0):null;
    System.out.println(val.getDocVoucherInvoiceE()+ val.getDocumentPay() + 
    val.getAmount()); 

因此,基本上,我在这里所做的是将类型CustomerLedger的变量更改为CustomerLedger的列表,然后在索引0处获取元素。在这里,我假设{{1} }仅返回列表中的一个元素。如果返回多个元素,则可以相应地更改s.getCustomerLedger()