Tengo dos ClassLoaders que cargan la misma clase. Entonces, obviamente, estos no se pueden enviar el uno al otro. Pero necesito acceder a un objeto creado en el otro ClassLoader.Solución para ClassCastException debido al problema de ClassLoader
Tengo acceso a ambos ClassLoaders. ¿Cómo puedo usar ese objeto en la otra clase? No necesito convertir el objeto para que coincida con el ClassLoader actual.
Pero el problema es que el tipo del objeto devuelto es Object
. Entonces, tengo que rechazar ese objeto para acceder a algunos métodos. ¿Cómo puedo hacer eso? El lanzamiento normal como el siguiente causa ClassCastException, que ya sé.
Mojo mojo = (Mojo) descriptor.getMojo();
descriptor#getMojo()
devuelve un objeto de tipo Mojo
pero el método devuelve Object
. ¿Cómo puede hacer esto?
Deseo saber si necesita más información.
He leído todas las teorías sobre la carga de clases, pero ninguna ha especificado una solución adecuada para esto.
En su caso, ¿qué ocurre si lo hace: 'Object o = descriptor.getMojo(); System.out.println (o.getClass); 'con los dos cargadores de clases diferentes? – Bringer128
La pregunta más importante aquí sería: ¿qué estás * realmente * tratando de lograr aquí? ¿Es este un ejercicio académico o hay un caso de uso real que respalda esta situación? –
@ Bringer128 Devuelve el mismo paquete de nombre de clase.Mojo. Estaba pensando si es posible realizar dicho casting a través de los métodos getClass() y #cast (Object o). – ravana