我正在编写一个必须与 MS SQL 数据库交互的应用程序。在我的应用程序中,我正在创建 Web 服务(使用 javax.jws)来访问数据库表。我正在 Web 服务中创建一个操作(方法),返回类型为 java.lang.Object[][],如下所示:
@WebMethod(操作名称 = "get_HistoryInfoByUser")
public java.lang.Object[][] get_HistoryInfoByUser(@WebParam(name = "email_Id")
String email_Id) throws Exception{
java.lang.Object[][] historyInfo = null;
// some code here
return historyInfo;
}
为了在我的应用程序中调用 Web 服务操作(方法),我正在编写以下内容
代码:
public Object[][] get_HistoryInfoByUser(String email_Id) {
java.util.List<net.java.dev.jaxb.array.AnyTypeArray> historyInfo = null;
try {
historyInfo = port.getHistoryInfoByUser(email_Id);
} catch (Exception_Exception ex) {
ex.printStackTrace();
}
return (Object[][]) historyInfo.toArray();
}
但我遇到了异常
线程“Thread-8”中出现异常
java.lang.ClassCastException:
[Ljava.lang.Object;无法投射到
[[Ljava.lang.Object;
Web服务操作返回类型为java.util.List(net.java.dev.jaxb.array.AnyTypeArray)
我需要返回类型 java.lang.Object[][]。
请您给我任何建议,这将帮助我克服这个问题。
转换不用于转换对象,它用于重新分类对象的类型。它告诉编译器应该将变量视为不同的类。如果您尝试将变量转换为与其不兼容的某种类型,您会得到ClassCastException
.
Object ojc = new ArrayList();
obj.add(new Object()); //Compiler error because Object does not have an add method
ArrayList lst = (ArrayList)obj;
lst.add(new Object()); //Works because now the compiler knows that the variable is an ArrayList
MyClass myClass = (MyClass)obj; //ClassCastException because the object is not actually a MyClass object
myClass.add(new Object()); //Assuming MyClass defines and add method that takes and object, this line compiles
就您而言, Object[] 和 Object[][] 是完全不同的类型,并且不能在之间进行转换。相反,您需要首先创建 2D 数组,然后将数组设置为 2D 数组的第一个成员。
Object[][] result = new Object[1][];
result[0] = historyInfo.toArray();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)