- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在编写一个必须与 MS SQL 数据库交互的应用程序。在我的应用程序中,我正在创建用于访问数据库表的 Web 服务(使用 javax.jws)。我正在 Web 服务中创建一个返回类型为 java.lang.Object[][] 的操作(方法),如下所示:
@WebMethod(operationName = "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;
}
为了在我的应用程序中调用网络服务操作(方法),我写了以下内容代码:
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();
}
但是我遇到了异常
Exception in thread "Thread-8" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[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[][] 是完全不同的类型,您不能在它们之间进行转换。相反,您需要先创建二维数组,然后将您的数组设置为二维数组的第一个成员。
Object[][] result = new Object[1][];
result[0] = historyInfo.toArray();
关于java - 访问用 java 编写的 Web 服务方法时出现 java.lang.ClassCastException。贾克斯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716926/
我们使用 cxf 2.5.2 和 spring 来公开和使用 Restful 服务。为了分发服务接口(interface)类,我们开始使用 wadl2java 目标(它根据给定的 wadl 文件生成接
我正在使用 Jax-RS作为我的REST框架。如果失败(即出现 500 错误),我希望能够从 rest 调用中提取错误消息。最好的方法是什么? 例如。当我调用 POSTMAN 时并得到一个错误我得到以
我做了一个 jax rs jersey 网络服务。服务器重新启动时,我必须从数据库加载数据。我现在正在做的是调用这个 url http://localhost:8080/jersey-openshif
我正在编写一个必须与 MS SQL 数据库交互的应用程序。在我的应用程序中,我正在创建用于访问数据库表的 Web 服务(使用 javax.jws)。我正在 Web 服务中创建一个返回类型为 java.
我是一名优秀的程序员,十分优秀!