我在 Eclipse 项目中有一个代理类,供项目使用 Web 服务。代理类如下所示(从向导自动生成的代码)
public class WebServiceUpg2SoapProxy implements org.uppgift2.www.WebServiceUpg2Soap {
private String _endpoint = null;
private org.uppgift2.www.WebServiceUpg2Soap webServiceUpg2Soap = null;
public WebServiceUpg2SoapProxy() {
_initWebServiceUpg2SoapProxy();
}
public WebServiceUpg2SoapProxy(String endpoint) {
_endpoint = endpoint;
_initWebServiceUpg2SoapProxy();
}
private void _initWebServiceUpg2SoapProxy() {
try {
webServiceUpg2Soap = (new org.uppgift2.www.WebServiceUpg2Locator()).getWebServiceUpg2Soap();
if (webServiceUpg2Soap != null) {
if (_endpoint != null)
((javax.xml.rpc.Stub)webServiceUpg2Soap)._setProperty("javax.xml.rpc.service.endpoint.address", _endpoint);
else
_endpoint = (String)((javax.xml.rpc.Stub)webServiceUpg2Soap)._getProperty("javax.xml.rpc.service.endpoint.address");
}
}
catch (javax.xml.rpc.ServiceException serviceException) {}
}
public String getEndpoint() {
return _endpoint;
}
public void setEndpoint(String endpoint) {
_endpoint = endpoint;
if (webServiceUpg2Soap != null)
((javax.xml.rpc.Stub)webServiceUpg2Soap)._setProperty("javax.xml.rpc.service.endpoint.address", _endpoint);
}
public org.uppgift2.www.WebServiceUpg2Soap getWebServiceUpg2Soap() {
if (webServiceUpg2Soap == null)
_initWebServiceUpg2SoapProxy();
return webServiceUpg2Soap;
}
public org.uppgift2.www.ObjectOwner[] getObjectOwner() throws java.rmi.RemoteException{
if (webServiceUpg2Soap == null)
_initWebServiceUpg2SoapProxy();
return webServiceUpg2Soap.getObjectOwner();
}
public org.uppgift2.www.RealEstateBroker[] getRealEstateBroker() throws java.rmi.RemoteException{
if (webServiceUpg2Soap == null)
_initWebServiceUpg2SoapProxy();
return webServiceUpg2Soap.getRealEstateBroker();
}
public org.uppgift2.www.Showing[] getShowing() throws java.rmi.RemoteException{
if (webServiceUpg2Soap == null)
_initWebServiceUpg2SoapProxy();
return webServiceUpg2Soap.getShowing();
}
public org.uppgift2.www.ProspectiveBuyer[] getProspectiveBuyers() throws java.rmi.RemoteException{
if (webServiceUpg2Soap == null)
_initWebServiceUpg2SoapProxy();
return webServiceUpg2Soap.getProspectiveBuyers();
}
public org.uppgift2.www.RealEstateObject[] getRealEstateObjects() throws java.rmi.RemoteException{
if (webServiceUpg2Soap == null)
_initWebServiceUpg2SoapProxy();
return webServiceUpg2Soap.getRealEstateObjects();
}
}
我在另一个类中有一个方法,它创建代理类的实例并调用它的方法
public TableModel getObjectOwner() {
WebServiceUpg2SoapProxy proxy2 = new WebServiceUpg2SoapProxy();
List<ObjectOwner> oo = null;
try {
oo = proxy2.getObjectOwner();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return buildTableModel(oo);
}
这给了我一个错误
Type mismatch: cannot convert from ObjectOwner[] to List
我的问题是;如何将代理的返回类型从 ObjectOwner[] 更改为 List?这可以在向导中完成吗?
我知道在 Visual Studio 中,您只需右键单击解决方案资源管理器中的服务器引用并配置引用,然后在提示窗口中更改它即可。这可以在 Eclipse 中完成吗?
提前致谢。
最佳答案
该错误非常具体:您无法分配 ObjectOwner[]
(一个数组)到 List<ObjectOwner>
(实现 List
接口(interface)的类的实例)。相反,您可以更改代码以适应此数组,并使用 Arrays#asList
将其转换为列表。 :
oo = Arrays.asList(proxy2.getObjectOwner());
请注意,通过执行此操作,您无法在此列表中添加新元素。如果你想修改列表的状态,最好创建一个新的 ArrayList
(或 List
接口(interface)的另一个所需实现)并在数组中添加元素:
//Since Java 7
oo = new ArrayList<>(Arrays.asList(proxy2.getObjectOwner()));
//For Java 5 and 6
oo = new ArrayList<ObjectOwner>(Arrays.asList(proxy2.getObjectOwner()));
关于java - 在 Eclipse 中更改 Web 服务 java 代理方法返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23092890/