【问题标题】:A java.lang.ClassCastException while accessing web service method written in java. jaxb访问用 java 编写的 Web 服务方法时出现 java.lang.ClassCastException。贾克斯
【发布时间】:2010-09-15 10:54:38
【问题描述】:

我正在编写一个必须与 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;
}

为了在我的应用程序中调用 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[][]。

请你给我任何建议,这将帮助我克服这个问题。

【问题讨论】:

  • 如果有人提供了对您有帮助的答案,您应该接受该答案。对于您提出的任何问题,您都没有接受答案。

标签: java web-services jaxb


【解决方案1】:

铸造不用于转换对象,它用于重新分类对象的类型。它在那里告诉编译器应该将变量视为不同的类。如果您尝试将变量强制转换为某种不兼容的类型,您会得到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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多