2010-09-15 20 views
6

Estoy escribiendo una aplicación donde tengo que interactuar con la base de datos MS SQL. En mi aplicación, estoy creando servicios web (usando javax.jws) para acceder a las tablas de la base de datos. Estoy creando una operación (método) en el servicio web con el tipo de retorno java.lang.Object [] [] de la siguiente manera:Una java.lang.ClassCastException mientras se accede al método de servicio web escrito en java. jaxb

@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; 
} 

y para llamar Web operación de servicio (método) en mi solicitud, estoy escribiendo siguiente código:

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(); 
} 

pero yo estoy haciendo una excepción

Excepción en el hilo "Thread-8" java.lang.ClassCastException: [Ljava.lang.Object; no se puede convertir a [[Ljava.lang.Object;

servicio Web Tipo de operación retorno es java.util.List (net.java.dev.jaxb.array.AnyTypeArray) y necesito volver tipo java.lang.Object [] [].

Por favor, puede darme cualquier sugerencia que me ayude a superar este problema.

+0

Si alguien proporciona una respuesta que lo ayude, debe aceptar la respuesta. No ha aceptado una respuesta para ninguna de las preguntas que ha hecho. – unholysampler

Respuesta

1

La fundición no se utiliza para transformar objetos, sino que se usa para reclasificar el tipo de un objeto. Está allí para decirle al compilador que una variable debe tratarse como una clase diferente. Si intentas convertir una variable a algún tipo con la que no es compatible, obtienes el 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 

En su caso, Object [] y Object [] [] son ​​completamente diferentes tipos y no es algo que se puede lanzar el medio. En su lugar, primero debe hacer la matriz 2D y luego configurar la matriz para que sea el primer miembro de la matriz 2D.

Object[][] result = new Object[1][]; 
result[0] = historyInfo.toArray(); 
Cuestiones relacionadas